From 4927aae891168610dc0c1ee26816f8c3278cd8e5 Mon Sep 17 00:00:00 2001
From: fhenry <florian.henry@open-concept.pro>
Date: Wed, 17 Apr 2013 16:20:01 +0200
Subject: [PATCH] [ task #741 ] Gestion des interventions/Add intervention box

---
 ChangeLog                                   |   3 +-
 htdocs/core/boxes/box_ficheinter.php        | 153 ++++++++++++++++++++
 htdocs/core/modules/modFicheinter.class.php |   1 +
 htdocs/langs/en_US/boxes.lang               |   2 +
 htdocs/langs/es_ES/boxes.lang               |   2 +
 htdocs/langs/fr_FR/boxes.lang               |   2 +
 6 files changed, 162 insertions(+), 1 deletion(-)
 create mode 100644 htdocs/core/boxes/box_ficheinter.php

diff --git a/ChangeLog b/ChangeLog
index 6e304944378..da6bd6b1bfd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -48,7 +48,8 @@ For users:
 - New: [ task #798 ] Add range limit date on product/services as it is done on order and invoice
 - New: [ task #814 ] Add extrafield feature into Project/project tasks module
 - New: [ task #770 ] Add ODT document generation for Projects module
-  
+- New: [ task #741 ] Add intervention box
+
 For translators:
 - Update language files.
 
diff --git a/htdocs/core/boxes/box_ficheinter.php b/htdocs/core/boxes/box_ficheinter.php
new file mode 100644
index 00000000000..78a81139654
--- /dev/null
+++ b/htdocs/core/boxes/box_ficheinter.php
@@ -0,0 +1,153 @@
+<?php
+/* Copyright (C) 2013 Florian Henry  <florian.henry@open-concept.pro>
+ *
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * 		\file       htdocs/core/boxes/box_intervention.php
+ * 		\ingroup    ficheinter
+ * 		\brief      Module de generation de l'affichage de la box ficheinter
+ */
+
+include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php';
+
+
+/**
+ * Class to manage the box to show last contracts
+ */
+class box_ficheinter extends ModeleBoxes
+{
+	var $boxcode="ficheinter";
+	var $boximg="object_intervention";
+	var $boxlabel="BoxFicheInter";
+	var $depends = array("ficheinter");	// conf->contrat->enabled
+
+	var $db;
+	var $param;
+
+	var $info_box_head = array();
+	var $info_box_contents = array();
+
+
+	/**
+	 *  Load data for box to show them later
+	 *
+	 *  @param	int		$max        Maximum number of records to load
+	 *  @return	void
+	*/
+	function loadBox($max=10)
+	{
+		global $user, $langs, $db, $conf;
+		
+		$this->max=$max;
+
+		include_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php';
+		$ficheinterstatic=new Fichinter($db);
+		
+		$this->info_box_head = array('text' => $langs->trans("BoxTitleLastFicheInter",$max));
+
+		if ($user->rights->ficheinter->lire)
+		{
+			$sql = "SELECT f.rowid, f.ref, f.fk_soc, f.fk_statut,";
+			$sql.= " f.datec,";
+			$sql.= " f.date_valid as datev,";
+			$sql.= " f.tms as datem,";
+			$sql.= " s.nom, s.rowid as socid, s.client";
+			$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
+			if (! $user->rights->societe->client->voir)
+				$sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
+			$sql.= ", ".MAIN_DB_PREFIX."fichinter as f";
+			$sql.= " WHERE f.fk_soc = s.rowid ";
+			$sql.= " AND f.entity = ".$conf->entity;
+			if (! $user->rights->societe->client->voir)
+				$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
+			$sql.= " ORDER BY f.tms DESC";
+			$sql.= $db->plimit($max, 0);
+
+			dol_syslog(get_class($this).'::loadBox sql='.$sql,LOG_DEBUG);
+			$resql = $db->query($sql);
+			if ($resql)
+			{
+				$num = $db->num_rows($resql);
+				$now=dol_now();
+
+				$i = 0;
+
+				while ($i < $num)
+				{
+					$objp = $db->fetch_object($resql);
+					$datec=$db->jdate($objp->datec);
+
+					$ficheinterstatic->statut=$objp->fk_statut;
+					$ficheinterstatic->id=$objp->rowid;
+					
+					$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"',
+					'logo' => $this->boximg,
+					'url' => DOL_URL_ROOT."/ficheinter/fiche.php?id=".$objp->rowid);
+
+					$this->info_box_contents[$i][1] = array('td' => 'align="left"',
+					'text' => ($objp->ref?$objp->ref:$objp->rowid),	// Some contracts have no ref
+					'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" nowrap="nowrap"',
+					'text' => $ficheinterstatic->getLibStatut(6),
+					'asis'=>1
+					);
+
+					$i++;
+				}
+
+				if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedContracts"));
+			}
+			else
+			{
+				$this->info_box_contents[0][0] = array(  'td' => 'align="left"',
+				'maxlength'=>500,
+				'text' => ($db->error().' sql='.$sql));
+			}
+		}
+		else
+		{
+			$this->info_box_contents[0][0] = array('td' => 'align="left"',
+			'text' => $langs->trans("ReadPermissionNotAllowed"));
+		}
+	}
+
+	/**
+	 *	Method to show box
+	 *
+	 *	@param	array	$head       Array with properties of box title
+	 *	@param  array	$contents   Array with properties of box lines
+	 *	@return	void
+	 */
+	function showBox($head = null, $contents = null)
+	{
+		parent::showBox($this->info_box_head, $this->info_box_contents);
+	}
+
+}
+
+?>
diff --git a/htdocs/core/modules/modFicheinter.class.php b/htdocs/core/modules/modFicheinter.class.php
index 96c0b6b012a..52a90179b95 100644
--- a/htdocs/core/modules/modFicheinter.class.php
+++ b/htdocs/core/modules/modFicheinter.class.php
@@ -89,6 +89,7 @@ class modFicheinter extends DolibarrModules
 
         // Boites
         $this->boxes = array();
+        $this->boxes[0][1] = "box_ficheinter.php";
 
         // Permissions
         $this->rights = array();
diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang
index e7a56618f88..18c6d541505 100644
--- a/htdocs/langs/en_US/boxes.lang
+++ b/htdocs/langs/en_US/boxes.lang
@@ -18,6 +18,7 @@ BoxLastActions=Last actions
 BoxLastContracts=Last contracts
 BoxLastContacts=Last contacts/addresses
 BoxLastMembers=Last members
+BoxFicheInter=Last interventions
 BoxCurrentAccounts=Current accounts balance
 BoxSalesTurnover=Sales turnover
 BoxTotalUnpaidCustomerBills=Total unpaid customer's invoices
@@ -40,6 +41,7 @@ BoxTitleLastProspects=Last %s recorded prospects
 BoxTitleLastModifiedProspects=Last %s modified prospects
 BoxTitleLastProductsInContract=Last %s products/services in a contract
 BoxTitleLastModifiedMembers=Last %s modified members
+BoxTitleLastFicheInter=Last %s modified intervention
 BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer's invoices
 BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier's invoices
 BoxTitleCurrentAccounts=Current account's balances
diff --git a/htdocs/langs/es_ES/boxes.lang b/htdocs/langs/es_ES/boxes.lang
index 72c4363ebe5..8ba90fe75e4 100644
--- a/htdocs/langs/es_ES/boxes.lang
+++ b/htdocs/langs/es_ES/boxes.lang
@@ -18,6 +18,7 @@ BoxLastActions=Últimos eventos
 BoxLastContracts=Últimos contratos
 BoxLastContacts=Últimos contactos/direcciones
 BoxLastMembers=Últimos miembros modificados
+BoxFicheInter=Últimos intervenciones modificados
 BoxCurrentAccounts=Saldos cuentas corrientes
 BoxSalesTurnover=Volumen de ventas
 BoxTotalUnpaidCustomerBills=Total facturas a clientes pendientes de pago
@@ -47,6 +48,7 @@ BoxTitleTotalUnpaidCustomerBills=Pendiente de clientes
 BoxTitleTotalUnpaidSuppliersBills=Pendiente a proveedores
 BoxTitleLastModifiedContacts=Los %s últimos contactos/direcciones modificadas
 BoxTitleLastModifiedMembers=Los %s últimos miembros modificados
+BoxTitleLastFicheInter=Los %s últimos intervenciones modificados
 BoxMyLastBookmarks=Mis %s últimos marcadores
 BoxOldestExpiredServices=Servicios antiguos expirados
 BoxLastExpiredServices=Los %s contratos más antiguos con servicios activos expirados 
diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang
index 61ef3d2ab52..cd61aa64d93 100644
--- a/htdocs/langs/fr_FR/boxes.lang
+++ b/htdocs/langs/fr_FR/boxes.lang
@@ -18,6 +18,7 @@ BoxLastActions=Derniers événements
 BoxLastContracts=Derniers contrats
 BoxLastContacts=Derniers contacts/adresses
 BoxLastMembers=Derniers adhérents modifiés
+BoxFicheInter=Dernières fiche d'intervention modifiée
 BoxCurrentAccounts=Soldes Comptes courants
 BoxSalesTurnover=Chiffre d'affaires
 BoxTotalUnpaidCustomerBills=Total des factures clients impayées
@@ -47,6 +48,7 @@ BoxTitleTotalUnpaidCustomerBills=Impayés clients
 BoxTitleTotalUnpaidSuppliersBills=Impayés fournisseurs
 BoxTitleLastModifiedContacts=Les %s derniers contacts/adresses modifiés 
 BoxTitleLastModifiedMembers=Les %s derniers adhérents modifiés 
+BoxTitleLastFicheInter=Les %s dernières fiche d'intervention modifiée
 BoxMyLastBookmarks=Mes %s derniers marque-pages
 BoxOldestExpiredServices=Plus anciens services expirés
 BoxLastExpiredServices=Les %s plus anciens contrats avec services actifs expirés
-- 
GitLab