* Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2005-2007 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 * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** * \file htdocs/index.php * \brief Dolibarr home page * \version $Id$ */ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/boxes.php"); // If not defined, we select menu "home" if (! isset($_GET["mainmenu"])) $_GET["mainmenu"]="home"; $infobox=new InfoBox($db); /* * Actions */ // No actions /* * View */ llxHeader(); print_fiche_titre($langs->trans("HomeArea")); if (! empty($conf->global->MAIN_MOTD)) { $conf->global->MAIN_MOTD=eregi_replace('$','',$conf->global->MAIN_MOTD); if (! empty($conf->global->MAIN_MOTD)) { print "\n\n"; print '
'; print dol_htmlentitiesbr($conf->global->MAIN_MOTD); print '

'; print "\n\n"; } } // Affiche warning répertoire install existe (si utilisateur admin) if ($user->admin && ! defined("MAIN_REMOVE_INSTALL_WARNING")) { if (is_dir(DOL_DOCUMENT_ROOT."/install") && ! file_exists('../install.lock')) { $langs->load("other"); $message=$langs->trans("WarningInstallDirExists",DOL_DOCUMENT_ROOT."/install"); $message.=$langs->trans("WarningUntilDirRemoved",DOL_DOCUMENT_ROOT."/install"); print info_admin($message); print "
\n"; } } print ''; print '
'; /* * Informations area */ if (file_exists(DOL_DOCUMENT_ROOT.'/logo.png')) { print ''; print ''; print "
'; print '

\n"; } print ''; print ''; print ''; $userstring=$user->fullname; print ''; print ''; print ''; print "\n"; print "
'.$langs->trans("Informations").'
'.$langs->trans("User").''.$userstring.'
'.$langs->trans("PreviousConnexion").''; if ($user->datepreviouslogin) print dolibarr_print_date($user->datepreviouslogin,"dayhour"); else print $langs->trans("Unknown"); print '
\n"; /* * Tableau de bord d'états Dolibarr (statistiques) * Non affiché pour un utilisateur externe */ $langs->load("commercial"); $langs->load("bills"); if ($user->societe_id == 0) { print '
'; print ''; print ''; print ''; print ''; print ''; $var=true; // Condition à vérifier pour affichage de chaque ligne du tableau de bord $conditions=array($conf->societe->enabled && $user->rights->societe->lire, $conf->societe->enabled && $user->rights->societe->lire, $conf->fournisseur->enabled && $user->rights->fournisseur->lire, $conf->adherent->enabled && $user->rights->adherent->lire, $conf->produit->enabled && $user->rights->produit->lire, $conf->service->enabled && $user->rights->produit->lire, $conf->propal->enabled && $user->rights->propale->lire, $conf->commande->enabled && $user->rights->commande->lire, $conf->facture->enabled && $user->rights->facture->lire, $conf->telephonie->enabled && $user->rights->telephonie->lire, $conf->societe->enabled && $user->rights->contrat->activer); // Fichier des classes qui contiennent la methode load_state_board pour chaque ligne $includes=array(DOL_DOCUMENT_ROOT."/client.class.php", DOL_DOCUMENT_ROOT."/prospect.class.php", DOL_DOCUMENT_ROOT."/fourn/fournisseur.class.php", DOL_DOCUMENT_ROOT."/adherents/adherent.class.php", DOL_DOCUMENT_ROOT."/product.class.php", DOL_DOCUMENT_ROOT."/service.class.php", DOL_DOCUMENT_ROOT."/propal.class.php", DOL_DOCUMENT_ROOT."/commande/commande.class.php", DOL_DOCUMENT_ROOT."/facture.class.php", DOL_DOCUMENT_ROOT."/telephonie/lignetel.class.php", DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); // Nom des classes qui contiennent la methode load_state_board pour chaque ligne $classes=array('Client', 'Prospect', 'Fournisseur', 'Adherent', 'Product', 'Service', 'Propal', 'Commande', 'Facture', 'LigneTel', 'Contrat'); // Clé de tableau retourné par la methode load_state_board pour chaque ligne $keys=array('customers', 'prospects', 'suppliers', 'members', 'products', 'services', 'proposals', 'orders', 'invoices', 'sign', 'Contracts'); // Icon des lignes du tableau de bord $icons=array('company', 'company', 'company', 'user', 'product', 'service', 'propal', 'order', 'bill', 'phoning', 'order'); // Translation keyword $titres=array("Customers", "Prospects", "Suppliers", "Members", "Products", "Services", "CommercialProposals", "CustomersOrders", "BillsCustomers", "Lignes de telephonie suivis", "Contracts"); // Lien des lignes du tableau de bord $links=array(DOL_URL_ROOT.'/comm/clients.php', DOL_URL_ROOT.'/comm/prospect/prospects.php', DOL_URL_ROOT.'/fourn/index.php', DOL_URL_ROOT.'/adherents/liste.php?statut=1&mainmenu=members', DOL_URL_ROOT.'/product/liste.php?type=0&mainmenu=products', DOL_URL_ROOT.'/product/liste.php?type=1&mainmenu=products', DOL_URL_ROOT.'/comm/propal.php?mainmenu=commercial', DOL_URL_ROOT.'/commande/liste.php?mainmenu=commercial', DOL_URL_ROOT.'/compta/facture.php?mainmenu=accountancy', DOL_URL_ROOT.'/telephonie/ligne/index.php', DOL_URL_ROOT.'/contrat/liste.php'); // Translation lang files $langfile=array("bills", "prospects", "suppliers", "members", "products", "produts", "propal", "orders", "bills", "", "Contracts"); //print memory_get_usage()."
"; // Boucle et affiche chaque ligne du tableau foreach ($keys as $key=>$val) { if ($conditions[$key]) { $classe=$classes[$key]; // Cherche dans cache si le load_state_board deja réalisé if (! isset($boardloaded[$classe]) || ! is_object($boardloaded[$classe])) { include_once($includes[$key]); $board=new $classe($db); $board->load_state_board($user); $boardloaded[$classe]=$board; } else $board=$boardloaded[$classe]; $var=!$var; if ($langfile[$key]) $langs->load($langfile[$key]); $title=$langs->trans($titres[$key]); print ''; print ''; print ''; print ''; //print $includes[$key].' '.memory_get_usage()."
"; } } print '
'.$langs->trans("DolibarrStateBoard").' 
'.img_object($title,$icons[$key]).''.$title.''.$board->nb[$val].'
'; } print '
'; /* * Dolibarr Working Board */ print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; $nboflate=0; $var=true; // // Ne pas inclure de sections sans gestion de permissions // // Nbre actions à faire (en retard) if ($conf->agenda->enabled && $user->rights->agenda->myactions->read) { include_once(DOL_DOCUMENT_ROOT."/actioncomm.class.php"); $board=new ActionComm($db); $board->load_board($user); $board->warning_delay=$conf->actions->warning_delay/60/60/24; $board->label=$langs->trans("ActionsToDo"); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre commandes clients à traiter if ($conf->commande->enabled && $user->rights->commande->lire) { include_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php"); $board=new Commande($db); $board->load_board($user); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre propales ouvertes (expirées) if ($conf->propal->enabled && $user->rights->propale->lire) { $langs->load("propal"); include_once(DOL_DOCUMENT_ROOT."/propal.class.php"); $board=new Propal($db); $board->load_board($user,"opened"); $var=!$var; print ''; print ''; print ''; print ''; print ''; } // Nbre propales fermées signées (à facturer) if ($conf->propal->enabled && $user->rights->propale->lire) { $langs->load("propal"); include_once(DOL_DOCUMENT_ROOT."/propal.class.php"); $board=new Propal($db); $board->load_board($user,"signed"); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre services à activer (en retard) if ($conf->contrat->enabled && $user->rights->contrat->lire) { $langs->load("contracts"); include_once(DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); $board=new Contrat($db); $board->load_board($user,"inactives"); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre services actifs (à renouveler) if ($conf->contrat->enabled && $user->rights->contrat->lire) { $langs->load("contracts"); include_once(DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); $board=new Contrat($db); $board->load_board($user,"expired"); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre factures fournisseurs (à payer) if ($conf->fournisseur->enabled && $conf->facture->enabled && $user->rights->facture->lire) { $langs->load("bills"); include_once(DOL_DOCUMENT_ROOT."/fourn/fournisseur.facture.class.php"); $board=new FactureFournisseur($db); $board->load_board($user); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre factures clients (à payer) if ($conf->facture->enabled && $user->rights->facture->lire) { $langs->load("bills"); include_once(DOL_DOCUMENT_ROOT."/facture.class.php"); $board=new Facture($db); $board->load_board($user); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre ecritures à rapprocher if ($conf->banque->enabled && $user->rights->banque->lire && ! $user->societe_id) { $langs->load("banks"); include_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); $board=new Account($db); $board->load_board($user); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre ecritures à rapprocher if ($conf->banque->enabled && $user->rights->banque->lire && ! $user->societe_id) { $langs->load("banks"); include_once(DOL_DOCUMENT_ROOT."/compta/paiement/cheque/remisecheque.class.php"); $board=new RemiseCheque($db); $board->load_board($user); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } // Nbre adhérent valides (attente cotisation) if ($conf->adherent->enabled && $user->rights->adherent->lire && ! $user->societe_id) { $langs->load("members"); include_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); $board=new Adherent($db); $board->load_board($user); $var=!$var; print ''; print ''; print ''; print ''; print ''; print "\n"; } print '
'.$langs->trans("DolibarrWorkBoard").''.$langs->trans("Number").''.$langs->trans("Late").'  
'.img_object($langs->trans("Actions"),"task").''.$board->label.''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($board->warning_delay).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Orders"),"order").''.$langs->trans("OrdersToProcess").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->commande->traitement->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Propals"),"propal").''.$langs->trans("PropalsToClose").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->propal->cloture->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Propals"),"propal").''.$langs->trans("PropalsToBill").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->propal->facturation->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Contract"),"contract").''.$langs->trans("BoardNotActivatedServices").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->contrat->services->inactifs->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Contract"),"contract").''.$langs->trans("BoardRunningServices").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->contrat->services->expires->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Bills"),"bill").''.$langs->trans("SupplierBillsToPay").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->facture->fournisseur->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Bills"),"bill").''.$langs->trans("CustomerBillsUnpayed").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->facture->client->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("TransactionsToConciliate"),"payment").''.$langs->trans("TransactionsToConciliate").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->bank->rappro->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("BankChecksToReceipt"),"payment").''.$langs->trans("BankChecksToReceipt").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->bank->cheque->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'.img_object($langs->trans("Members"),"user").''.$langs->trans("Members").''.$board->nbtodo.''; print ''; print $board->nbtodolate; print ''; print ' (>'.ceil($conf->adherent->cotisation->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ''; if ($board->nbtodolate > 0) { print img_picto($langs->trans("NActionsLate",$board->nbtodolate),"warning"); $nboflate+=$board->nbtodolate; } else print ' '; print '
'; if ($nboflate > 0) { print '
'.img_picto($langs->trans("Alert"),'warning').' '.$langs->trans("WarningYouHaveAtLeastOneTaskLate").'
'; } print '
'; /* * Show boxes */ $boxarray=$infobox->listboxes("0",$user); // 0=value for home page //$boxid_left = array(); //$boxid_right = array(); if (sizeof($boxarray)) { print '
'; print_fiche_titre($langs->trans("OtherInformationsBoxes"),'',''); print ''; print '"; print "
'."\n"; print ''; // Affichage colonne gauche print '\n"; // Affichage colonne droite print '"; print "
'."\n"; print "\n\n"; print '
'."\n"; $ii=0; foreach ($boxarray as $key => $box) { if (eregi('^A',$box->box_order)) // colonne A { $ii++; //print 'box_id '.$boxarray[$ii]->box_id.' '; //print 'box_order '.$boxarray[$ii]->box_order.'
'; //$boxid_left[$key] = $box->box_id; // Affichage boite key $box->loadBox($conf->box_max_lines); $box->showBox(); } } // If no box on left, we add an invisible empty box if ($ii==0) { $box->box_id='A'; $box->info_box_head=array(); $box->info_box_contents=array(); $box->showBox(); } print "
\n"; print "\n"; print "
'; print "\n\n"; print '\n"; print "\n"; print "
\n"; print "\n"; print "
"; } if ($conf->use_javascript_ajax) { print "\n"; print ''."\n"; } // Juste pour éviter bug IE qui réorganise mal div précédents si celui-ci absent if (! $conf->browser->firefox) { print '
 
'; } $db->close(); llxFooter('$Date$ - $Revision$'); ?>