diff --git a/htdocs/contrat/contrat.class.php b/htdocs/contrat/contrat.class.php
index d52e43d7a20..33379eba6e8 100644
--- a/htdocs/contrat/contrat.class.php
+++ b/htdocs/contrat/contrat.class.php
@@ -42,8 +42,13 @@ class Contrat
var $ref;
var $product;
var $societe;
+
+ var $user_author;
var $user_service;
var $user_cloture;
+ var $date_creation;
+ var $date_cloture;
+
var $commercial_signature_id;
var $commercial_suivi_id;
@@ -559,5 +564,53 @@ class Contrat
if ($statut == 2) { return $langs->trans("ContractStatusClosed"); }
}
+
+ /*
+ * \brief Charge les informations d'ordre info dans l'objet contrat
+ * \param id id du contrat a charger
+ */
+ function info($id)
+ {
+ $sql = "SELECT c.rowid, ".$this->db->pdate("datec")." as datec, ".$this->db->pdate("date_cloture")." as date_cloture,";
+ $sql.= $this->db->pdate("c.tms")." as date_modification,";
+ $sql.= " fk_user_author, fk_user_cloture";
+ $sql.= " FROM ".MAIN_DB_PREFIX."contrat as c";
+ $sql.= " WHERE c.rowid = ".$id;
+
+ $result=$this->db->query($sql);
+ if ($result)
+ {
+ if ($this->db->num_rows($result))
+ {
+ $obj = $this->db->fetch_object($result);
+
+ $this->id = $obj->rowid;
+
+ if ($obj->fk_user_author) {
+ $cuser = new User($this->db, $obj->fk_user_author);
+ $cuser->fetch();
+ $this->user_creation = $cuser;
+ }
+
+ if ($obj->fk_user_cloture) {
+ $cuser = new User($this->db, $obj->fk_user_cloture);
+ $cuser->fetch();
+ $this->user_cloture = $cuser;
+ }
+
+ $this->date_creation = $obj->datec;
+ $this->date_modification = $obj->date_modification;
+ $this->date_cloture = $obj->date_cloture;
+ }
+
+ $this->db->free($result);
+
+ }
+ else
+ {
+ dolibarr_print_error($this->db);
+ }
+ }
+
}
?>
diff --git a/htdocs/contrat/enservice.php b/htdocs/contrat/enservice.php
index 3e649394401..4d5c62f3a94 100644
--- a/htdocs/contrat/enservice.php
+++ b/htdocs/contrat/enservice.php
@@ -106,7 +106,10 @@ if ($resql)
print '
'.img_object($langs->trans("ShowService"),"service").' '.dolibarr_trunc($obj->label,20).' ';
print ''.img_object($langs->trans("ShowCompany"),"company").' '.dolibarr_trunc($obj->nom,44).' ';
print ''.dolibarr_print_date($obj->date_ouverture).' ';
- print ''.($obj->date_fin_validite?dolibarr_print_date($obj->date_fin_validite):' ').' ';
+ print ''.($obj->date_fin_validite?dolibarr_print_date($obj->date_fin_validite):' ');
+ if ($obj->date_fin_validite < mktime()) print img_warning($langs->trans("Late"));
+ else print ' ';
+ print ' ';
print ' ';
print "\n";
$i++;
diff --git a/htdocs/contrat/fiche.php b/htdocs/contrat/fiche.php
index 8afc8473a20..16e1b534972 100644
--- a/htdocs/contrat/fiche.php
+++ b/htdocs/contrat/fiche.php
@@ -461,6 +461,9 @@ else
$hselected = $h;
$h++;
+ $head[$h][0] = DOL_URL_ROOT.'/contrat/info.php?id='.$contrat->id;
+ $head[$h][1] = $langs->trans("Info");
+ $h++;
dolibarr_fiche_head($head, $hselected, $langs->trans("Contract").': '.$contrat->id);
diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php
index c7215342e27..916a26e0b61 100644
--- a/htdocs/contrat/index.php
+++ b/htdocs/contrat/index.php
@@ -62,19 +62,6 @@ print ' \n";
+ print "\n";
}
+print ' ';
+
+// Légende
+$var=false;
+print '';
+print ''.$langs->trans("ServicesLegend").' ';
+print '';
+print img_statut(0,$langs->trans("ServiceStatusInitial")).' '.$langs->trans("ServiceStatusInitial").' ';
+print img_statut(4,$langs->trans("ServiceStatusRunning")).' '.$langs->trans("ServiceStatusRunning").' ';
+print img_statut(5,$langs->trans("ServiceStatusClosed")).' '.$langs->trans("ServiceStatusClosed").' ';
+print ' ';
+print '
';
+
print '';
// Last contracts
$max=5;
-$sql = "SELECT count(cd.rowid) as nb, c.rowid as cid, c.datec, c.statut, s.nom, s.idp as sidp";
+$sql = 'SELECT ';
+$sql.= ' sum('.$db->ifsql("cd.statut=0",1,0).') as nb_initial,';
+$sql.= ' sum('.$db->ifsql("cd.statut=4 AND cd.date_fin_validite > sysdate()",1,0).') as nb_running,';
+$sql.= ' sum('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NULL OR cd.date_fin_validite <= sysdate())",1,0).') as nb_late,';
+$sql.= ' sum('.$db->ifsql("cd.statut=5",1,0).') as nb_closed,';
+$sql.= " c.rowid as cid, c.datec, c.statut, s.nom, s.idp as sidp";
$sql.= " FROM ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
$sql.= " WHERE c.fk_soc = s.idp ";
if ($socid > 0) $sql .= " AND s.idp = $socid";
$sql.= " GROUP BY c.rowid, c.datec, c.statut, s.nom, s.idp";
-$sql.= " ORDER BY c.date_contrat DESC";
+$sql.= " ORDER BY c.datec DESC";
$sql.= " LIMIT $max";
$result=$db->query($sql);
@@ -111,7 +116,12 @@ if ($result)
print '';
- print ''.$langs->trans("LastContracts",5).' ';
+ print ''.$langs->trans("LastContracts",5).' ';
+ print ''.$langs->trans("DateCreation").' ';
+ print ''.$langs->trans("Status").' ';
+ print ''.img_statut(0,$langs->trans("ServiceStatusInitial")).' ';
+ print ''.img_statut(4,$langs->trans("ServiceStatusRunning")).' ';
+ print ''.img_statut(5,$langs->trans("ServiceStatusClosed")).' ';
print " \n";
$contratstatic=new Contrat($db);
@@ -124,11 +134,15 @@ if ($result)
print "";
print "cid\">";
- print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.' ';
- print ''.$langs->trans("ServicesNomberShort",$obj->nb).' ';
+ print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'';
+ if ($obj->nb_late) print img_warning($langs->trans("Late"));
+ print '';
print ''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.' ';
print ''.dolibarr_print_date($obj->datec).' ';
print ''.$contratstatic->LibStatut($obj->statut).' ';
+ print ''.($obj->nb_initial>0?$obj->nb_initial:'').' ';
+ print ''.($obj->nb_running+$obj->nb_late>0?$obj->nb_running+$obj->nb_late:'').' ';
+ print ''.($obj->nb_closed>0?$obj->nb_closed:'').' ';
print " \n";
$i++;
}
@@ -191,13 +205,12 @@ else
print ' ';
// Last activated services
-$max=10;
+$max=5;
$sql = "SELECT cd.rowid as cid, cd.statut, cd.label, cd.description as note, cd.fk_contrat, c.fk_soc, s.nom";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd, ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
-$sql.= " WHERE cd.statut = 4";
-$sql.= " AND cd.fk_contrat = c.rowid AND c.fk_soc = s.idp";
-$sql.= " ORDER BY cd.date_ouverture DESC";
+$sql.= " WHERE cd.fk_contrat = c.rowid AND c.fk_soc = s.idp";
+$sql.= " ORDER BY cd.tms DESC";
if ( $db->query($sql) )
{
@@ -206,7 +219,7 @@ if ( $db->query($sql) )
print '';
- print ''.$langs->trans("LastActivatedServices",min($num,$max)).' ';
+ print ''.$langs->trans("LastModifiedServices",min($num,$max)).' ';
print " \n";
$var=True;
@@ -216,7 +229,9 @@ if ( $db->query($sql) )
$var=!$var;
print "";
- print ''.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.' ';
+ print ''.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.' ';
+ if ($obj->nb_late) print img_warning($langs->trans("Late"));
+ print ' ';
print ''.img_object($langs->trans("ShowService"),"service");
if ($obj->label) print ' '.dolibarr_trunc($obj->label,20).' ';
else print ' '.dolibarr_trunc($obj->note,20).'';
diff --git a/htdocs/contrat/ligne.php b/htdocs/contrat/ligne.php
index d1118b48c40..cb3fb0128fc 100644
--- a/htdocs/contrat/ligne.php
+++ b/htdocs/contrat/ligne.php
@@ -125,6 +125,11 @@ if ($id > 0)
$head[$h][1] = $langs->trans("ContractCard");
$h++;
+ $head[$h][0] = DOL_URL_ROOT.'/contrat/info.php?id='.$contrat->id;
+ $head[$h][1] = $langs->trans("Info");
+ $hselected = $h;
+ $h++;
+
$head[$h][0] = DOL_URL_ROOT.'/contrat/ligne.php?id='.$contrat->id."&ligne=".$_GET["ligne"];
$head[$h][1] = $langs->trans($langs->trans("EditServiceLine"));
$hselected = $h;
@@ -352,12 +357,10 @@ if ($id > 0)
*/
$form = new Form($db);
- print '';
+ print '';
}
if ($user->rights->contrat->activer && $contrat->statut == 1 && $objp->statut == 4)
@@ -424,7 +430,7 @@ if ($id > 0)
print ' ';
print '
';
- print '
';
+ print '';
}
}
diff --git a/htdocs/contrat/liste.php b/htdocs/contrat/liste.php
index 30299f2244c..2f7aecbc49a 100644
--- a/htdocs/contrat/liste.php
+++ b/htdocs/contrat/liste.php
@@ -18,14 +18,13 @@
*
* $Id$
* $Source$
- *
*/
/**
- \file htdocs/contrat/liste.php
+ \file htdocs/contrat/liste.php
\ingroup contrat
- \brief Page liste des contrats
- \version $Revision$
+ \brief Page liste des contrats
+ \version $Revision$
*/
require("./pre.inc.php");
@@ -51,19 +50,21 @@ $socid=$_GET["socid"];
if (! $sortfield) $sortfield="c.rowid";
if (! $sortorder) $sortorder="DESC";
-
-/*
- * Sécurité accés client
- */
-if ($user->societe_id > 0)
+// Sécurité accés client
+if ($user->societe_id > 0)
{
- $action = '';
- $socid = $user->societe_id;
+ $action = '';
+ $socid = $user->societe_id;
}
-$sql = "SELECT count(cd.rowid) as nb, c.rowid as cid, c.datec, c.statut, s.nom, s.idp as sidp";
+$sql = 'SELECT';
+$sql.= ' sum('.$db->ifsql("cd.statut=0",1,0).') as nb_initial,';
+$sql.= ' sum('.$db->ifsql("cd.statut=4 AND cd.date_fin_validite > sysdate()",1,0).') as nb_running,';
+$sql.= ' sum('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NULL OR cd.date_fin_validite <= sysdate())",1,0).') as nb_late,';
+$sql.= ' sum('.$db->ifsql("cd.statut=5",1,0).') as nb_closed,';
+$sql.= " c.rowid as cid, c.datec, c.statut, s.nom, s.idp as sidp";
$sql.= " FROM ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
$sql.= " WHERE c.fk_soc = s.idp ";
@@ -72,7 +73,7 @@ if ($_POST["search_contract"]) {
}
if ($socid > 0)
{
- $sql .= " AND s.idp = $socid";
+ $sql .= " AND s.idp = $socid";
}
$sql.= " GROUP BY c.rowid, c.datec, c.statut, s.nom, s.idp";
$sql.= " ORDER BY $sortfield $sortorder";
@@ -81,48 +82,53 @@ $sql.= $db->plimit($limit + 1 ,$offset);
$resql=$db->query($sql);
if ($resql)
{
- $num = $db->num_rows($resql);
- $i = 0;
+ $num = $db->num_rows($resql);
+ $i = 0;
- print_barre_liste($langs->trans("ListOfContracts"), $page, $_SERVER["PHP_SELF"], "&sref=$sref&snom=$snom", $sortfield, $sortorder,'',$num);
+ print_barre_liste($langs->trans("ListOfContracts"), $page, $_SERVER["PHP_SELF"], "&sref=$sref&snom=$snom", $sortfield, $sortorder,'',$num);
- print '';
+ print '';
- print '';
- print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid","","",'width="50"',$sortfield);
- print_liste_field_titre($langs->trans("NbOfServices"), $_SERVER["PHP_SELF"], "nb",'','','width="80"',$sortfield);
- print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom","","","",$sortfield);
- print_liste_field_titre($langs->trans("DateCreation"), $_SERVER["PHP_SELF"], "c.datec","","",'align="center"',$sortfield);
- print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "c.statut","","",'align="center"',$sortfield);
- print " \n";
-
- $contratstatic=new Contrat($db);
-
- $now=mktime();
- $var=True;
- while ($i < min($num,$limit))
+ print '';
+ print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid","","",'width="50"',$sortfield);
+ print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom","","","",$sortfield);
+ print_liste_field_titre($langs->trans("DateCreation"), $_SERVER["PHP_SELF"], "c.datec","","",'align="center"',$sortfield);
+ print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"], "c.statut","","",'align="center"',$sortfield);
+ print ''.img_statut(0,$langs->trans("ServiceStatusInitial")).' ';
+ print ''.img_statut(4,$langs->trans("ServiceStatusRunning")).' ';
+ print ''.img_statut(5,$langs->trans("ServiceStatusClosed")).' ';
+ print " \n";
+
+ $contratstatic=new Contrat($db);
+
+ $now=mktime();
+ $var=True;
+ while ($i < min($num,$limit))
{
- $obj = $db->fetch_object($resql);
- $var=!$var;
- print "";
- print "cid\">";
- print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.' ';
- print ''.$obj->nb.' ';
- print ''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.' ';
- print ''.dolibarr_print_date($obj->datec).' ';
- print ''.$contratstatic->LibStatut($obj->statut).' ';
-
- print " \n";
- $i++;
+ $obj = $db->fetch_object($resql);
+ $var=!$var;
+ print "";
+ print "cid\">";
+ print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.' ';
+ if ($obj->nb_late) print img_warning($langs->trans("Late"));
+ print ' ';
+ print ''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.' ';
+ print ''.dolibarr_print_date($obj->datec).' ';
+ print ''.$contratstatic->LibStatut($obj->statut).' ';
+ print ''.($obj->nb_initial>0?$obj->nb_initial:'').' ';
+ print ''.($obj->nb_running+$obj->nb_late>0?$obj->nb_running+$obj->nb_late:'').' ';
+ print ''.($obj->nb_closed>0?$obj->nb_closed:'').' ';
+ print " \n";
+ $i++;
}
- $db->free($resql);
+ $db->free($resql);
- print "
";
+ print "
";
}
else
{
- dolibarr_print_error($db);
+ dolibarr_print_error($db);
}