diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index 161b8ab98a2..d2ad9cbe3b8 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -1,6 +1,7 @@ - * Copyright (C) 2004-2008 Laurent Destailleur + * Copyright (C) 2004-2010 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 @@ -32,7 +33,7 @@ $langs->load("admin"); if (!$user->admin) accessforbidden(); -// D�finition des positions possibles pour les boites +// Definition des positions possibles pour les boites $pos_array = array(0); // Positions possibles pour une boite (0,1,2,...) $pos_name = array(0=>$langs->trans("Home")); // Nom des positions 0=Homepage, 1=... $boxes = array(); @@ -48,33 +49,33 @@ if ((isset($_POST["action"]) && $_POST["action"] == 'addconst')) if ($_POST["action"] == 'add') { $sql = "SELECT rowid"; - $sql.= " FROM ".MAIN_DB_PREFIX."boxes"; - $sql.= " WHERE fk_user=0 AND box_id=".$_POST["boxid"]." AND position=".$_POST["pos"]; - $resql = $db->query($sql); - dol_syslog("boxes.php::search if box active sql=".$sql); + $sql.= " FROM ".MAIN_DB_PREFIX."boxes"; + $sql.= " WHERE fk_user=0 AND box_id=".$_POST["boxid"]." AND position=".$_POST["pos"]; + $resql = $db->query($sql); + dol_syslog("boxes.php::search if box active sql=".$sql); if ($resql) - { - $num = $db->num_rows($resql); - if ($num == 0) - { - $db->begin(); - + { + $num = $db->num_rows($resql); + if ($num == 0) + { + $db->begin(); + // Si la boite n'est pas deja active, insert with box_order='' - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id, position, box_order, fk_user) values (".$_POST["boxid"].",".$_POST["pos"].", '', 0)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (box_id, position, box_order, fk_user) values (".$_POST["boxid"].",".$_POST["pos"].", '', 0)"; dol_syslog("boxes.php activate box sql=".$sql); - $resql = $db->query($sql); - - // Remove all personalized setup when a box is activated or disabled + $resql = $db->query($sql); + + // Remove all personalized setup when a box is activated or disabled $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; - $sql.= " WHERE param like 'MAIN_BOXES_%'"; + $sql.= " WHERE param like 'MAIN_BOXES_%'"; dol_syslog("boxes.php delete user_param sql=".$sql); - $resql = $db->query($sql); + $resql = $db->query($sql); $db->commit(); } Header("Location: boxes.php"); - exit; + exit; } else { @@ -86,14 +87,14 @@ if ($_GET["action"] == 'delete') { $db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; - $sql.= " WHERE rowid=".$_GET["rowid"]; - $resql = $db->query($sql); - - // Remove all personalized setup when a box is activated or disabled - $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; - $sql.= " WHERE param like 'MAIN_BOXES_%'"; - $resql = $db->query($sql); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; + $sql.= " WHERE rowid=".$_GET["rowid"]; + $resql = $db->query($sql); + + // Remove all personalized setup when a box is activated or disabled + $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param"; + $sql.= " WHERE param like 'MAIN_BOXES_%'"; + $resql = $db->query($sql); $db->commit(); } @@ -101,35 +102,34 @@ if ($_GET["action"] == 'delete') if ($_GET["action"] == 'switch') { // On permute les valeur du champ box_order des 2 lignes de la table boxes - $db->begin(); - - $objfrom=new ModeleBoxes($db); - $objfrom->fetch($_GET["switchfrom"]); - - $objto=new ModeleBoxes($db); - $objto->fetch($_GET["switchto"]); - - if (is_object($objfrom) && is_object($objto)) - { - $sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order='".$objto->box_order."' WHERE rowid=".$objfrom->rowid; + $db->begin(); + + $objfrom=new ModeleBoxes($db); + $objfrom->fetch($_GET["switchfrom"]); + + $objto=new ModeleBoxes($db); + $objto->fetch($_GET["switchto"]); + + if (is_object($objfrom) && is_object($objto)) + { + $sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order='".$objto->box_order."' WHERE rowid=".$objfrom->rowid; //print "xx".$sql; - $resultupdatefrom = $db->query($sql); - if (! $resultupdatefrom) { dol_print_error($db); } - $sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order='".$objfrom->box_order."' WHERE rowid=".$objto->rowid; + $resultupdatefrom = $db->query($sql); + if (! $resultupdatefrom) { dol_print_error($db); } + $sql="UPDATE ".MAIN_DB_PREFIX."boxes set box_order='".$objfrom->box_order."' WHERE rowid=".$objto->rowid; //print "xx".$sql; - $resultupdateto = $db->query($sql); - if (! $resultupdateto) { dol_print_error($db); } - } - - if ($resultupdatefrom && $resultupdateto) - { - $db->commit(); - } - else - { - $db->rollback(); - } - + $resultupdateto = $db->query($sql); + if (! $resultupdateto) { dol_print_error($db); } + } + + if ($resultupdatefrom && $resultupdateto) + { + $db->commit(); + } + else + { + $db->rollback(); + } } @@ -170,7 +170,7 @@ if ($resql) array_push($actives,$obj->box_id); if ($obj->box_order == '' || $obj->box_order == '0' || $decalage) $decalage++; - // On renum�rote l'ordre des boites si l'une d'elle est � '' + // On renumerote l'ordre des boites si l'une d'elle est a '' // This occurs just after an insert. if ($decalage) { @@ -303,7 +303,7 @@ if ($resql) print ''; /* - * Boites activ�es + * Boites activees * */ diff --git a/htdocs/includes/boxes/box_contracts.php b/htdocs/includes/boxes/box_contracts.php new file mode 100644 index 00000000000..e11cd19c049 --- /dev/null +++ b/htdocs/includes/boxes/box_contracts.php @@ -0,0 +1,150 @@ + + * + * 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/includes/boxes/box_contracts.php + * \ingroup contracts + * \brief Module de generation de l'affichage de la box contracts + * \version $Id$ + */ + +include_once(DOL_DOCUMENT_ROOT."/includes/boxes/modules_boxes.php"); + + +class box_contracts extends ModeleBoxes { + + var $boxcode="lastcontracts"; + var $boximg="object_contract"; + var $boxlabel; + var $depends = array("contrat"); // conf->propal->enabled + + var $db; + var $param; + + var $info_box_head = array(); + var $info_box_contents = array(); + + + /** + * \brief Constructeur de la classe + */ + function box_contracts() + { + global $langs; + + $langs->load("contracts"); + + $this->boxlabel=$langs->trans("BoxLastContracts"); + } + + /** + * \brief Charge les donnees en memoire pour affichage ulterieur + * \param $max Nombre maximum d'enregistrements a charger + */ + function loadBox($max=5) + { + global $user, $langs, $db, $conf; + + $this->max=$max; + + include_once(DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); + $contractstatic=new Contrat($db); + + $this->info_box_head = array('text' => $langs->trans("BoxTitleLastContracts",$max)); + + if ($user->rights->contrat->lire) + { + $sql = "SELECT s.nom, s.rowid as socid,"; + $sql.= " c.rowid, c.ref, c.statut as fk_statut, c.date_contrat, c.datec, c.fin_validite, c.date_cloture"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql.= ", ".MAIN_DB_PREFIX."contrat as c"; + if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql.= " WHERE c.fk_soc = s.rowid"; + $sql.= " AND c.entity = ".$conf->entity; + if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; + if($user->societe_id) $sql.= " AND s.rowid = ".$user->societe_id; + $sql.= " ORDER BY c.date_contrat DESC, c.ref DESC "; + $sql.= $db->plimit($max, 0); + + $result = $db->query($sql); + + if ($result) + { + $num = $db->num_rows($result); + $now=gmmktime(); + + $i = 0; + + while ($i < $num) + { + $objp = $db->fetch_object($result); + $datec=$db->jdate($objp->datec); + $dateterm=$db->jdate($objp->fin_validite); + $dateclose=$db->jdate($objp->date_cloture); + + $late = ''; + if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->contrat->cloture->warning_delay)) { $late = img_warning($langs->trans("Late")); } + + $this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', + 'logo' => $this->boximg, + 'url' => DOL_URL_ROOT."/contrat/fiche.php?id=".$objp->rowid); + + $this->info_box_contents[$i][1] = array('td' => 'align="left"', + 'text' => $objp->ref, + 'text2'=> $late, + 'url' => DOL_URL_ROOT."/contrat/fiche.php?id=".$objp->rowid); + + $this->info_box_contents[$i][2] = array('td' => 'align="left" width="16"', + 'logo' => 'company', + 'url' => DOL_URL_ROOT."/comm/fiche.php?socid=".$objp->socid); + + $this->info_box_contents[$i][3] = array('td' => 'align="left"', + 'text' => dol_trunc($objp->nom,40), + 'url' => DOL_URL_ROOT."/comm/fiche.php?socid=".$objp->socid); + + $this->info_box_contents[$i][4] = array('td' => 'align="right"', + 'text' => dol_print_date($datec,'day')); + + $this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"', + 'text' => $contractstatic->LibStatut($objp->fk_statut,3)); + + $i++; + } + + if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedContracts")); + } + else + { + dol_print_error($db); + } + } + else + { + $this->info_box_contents[0][0] = array('td' => 'align="left"', + 'text' => $langs->trans("ReadPermissionNotAllowed")); + } + } + + function showBox() + { + parent::showBox($this->info_box_head, $this->info_box_contents); + } + +} + +?> diff --git a/htdocs/includes/modules/modContrat.class.php b/htdocs/includes/modules/modContrat.class.php index b61e2309dd9..fdf9c7603b9 100644 --- a/htdocs/includes/modules/modContrat.class.php +++ b/htdocs/includes/modules/modContrat.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2004-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 @@ -71,8 +72,9 @@ class modContrat extends DolibarrModules // Constantes $this->const = array(); - // Boites + // Boxes $this->boxes = array(); + $this->boxes[0][1] = "box_contracts.php"; // Permissions $this->rights = array(); diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index 09ec54bdde7..3bf04f948b6 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -14,6 +14,7 @@ BoxLastCustomerOrders=Last customer orders BoxLastSuppliers=Last suppliers BoxLastBooks=Last books BoxLastActions=Last actions +BoxLastContracts=Last contracts BoxCurrentAccounts=Current accounts balance BoxSalesTurnover=Sales turnover BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices @@ -43,6 +44,7 @@ LastRefreshDate=Last refresh date NoRecordedBookmarks=No bookmarks defined. Click here to add bookmarks. NoRecordedCustomers=No recorded customers BoxTitleLastActionsToDo=Last %s actions to do +BoxTitleLastContracts=Last %s contracts NoActionsToDo=No actions to do NoRecordedOrders=No recorded customer's orders NoRecordedProposals=No recorded proposals diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang index 4e051260775..ffdc5233c96 100644 --- a/htdocs/langs/fr_FR/boxes.lang +++ b/htdocs/langs/fr_FR/boxes.lang @@ -14,6 +14,7 @@ BoxLastCustomerOrders=Dernières commandes BoxLastSuppliers=Derniers fournisseurs BoxLastBooks=Derniers livres BoxLastActions=Dernières actions +BoxLastContracts=Derniers contrats BoxCurrentAccounts=Soldes Comptes courants BoxSalesTurnover=Chiffre d'affaire BoxTotalUnpaidCustomerBills=Total des factures clients impayées @@ -43,6 +44,7 @@ LastRefreshDate=Date dernier rafraichissement NoRecordedBookmarks=Pas de bookmarks personnels. Cliquer ici pour en ajouter. NoRecordedCustomers=Pas de client enregistré BoxTitleLastActionsToDo=Les %s dernières actions à faire +BoxTitleLastContracts=Les %s derniers contrats NoActionsToDo=Pas d'action à faire NoRecordedOrders=Pas de commande clients enregistrée NoRecordedProposals=Pas de proposition commerciale enregistrée