New: Affiche picto warning pour les contrats qui ont au moins un service expir, et pour les services expirs

This commit is contained in:
Laurent Destailleur 2005-07-03 13:07:59 +00:00
parent ff90f5eb29
commit cddfdd9a97
6 changed files with 167 additions and 81 deletions

View File

@ -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);
}
}
}
?>

View File

@ -106,7 +106,10 @@ if ($resql)
print '<td><a href="../product/fiche.php?id='.$obj->pid.'">'.img_object($langs->trans("ShowService"),"service").' '.dolibarr_trunc($obj->label,20).'</a></td>';
print '<td><a href="../comm/fiche.php?socid='.$obj->sidp.'">'.img_object($langs->trans("ShowCompany"),"company").' '.dolibarr_trunc($obj->nom,44).'</a></td>';
print '<td align="center">'.dolibarr_print_date($obj->date_ouverture).'</td>';
print '<td align="center">'.($obj->date_fin_validite?dolibarr_print_date($obj->date_fin_validite):'&nbsp;').'</td>';
print '<td align="center">'.($obj->date_fin_validite?dolibarr_print_date($obj->date_fin_validite):'&nbsp;');
if ($obj->date_fin_validite < mktime()) print img_warning($langs->trans("Late"));
else print '&nbsp;&nbsp;&nbsp;&nbsp;';
print '</td>';
print '<td align="center"><a href="'.DOL_URL_ROOT.'/contrat/ligne.php?id='.$obj->cid.'&ligne='.$obj->rowid.'"><img src="./statut'.$obj->statut.'.png" border="0" alt="statut"></a></td>';
print "</tr>\n";
$i++;

View File

@ -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);

View File

@ -62,19 +62,6 @@ print '<table class="noborder" width="100%">';
print '<tr><td width="30%" valign="top">';
// Légende
$var=false;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("Legend").'</td></tr>';
print '<tr '.$bc[$var].'><td nowrap>';
print '<img src="./statut0.png" border="0" alt="statut">&nbsp;Statut initial<br />';
print '<img src="./statut4.png" border="0" alt="statut">&nbsp;'.$langs->trans("ContractStatusRunning").'<br />';
print '<img src="./statut5.png" border="0" alt="statut">&nbsp;'.$langs->trans("Closed").'<br />';
print '</td></tr>';
print '</table>';
print '<br>';
/*
* Recherche Contrat
*/
@ -85,22 +72,40 @@ if ($conf->contrat->enabled) {
print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAContract").'</td></tr>';
print '<tr '.$bc[$var].'><td nowrap>';
print $langs->trans("Ref").':</td><td><input type="text" class="flat" name="search_contract" size="18"></td><td><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>';
print "</table></form><br>\n";
print "</table></form>\n";
}
print '<br>';
// Légende
$var=false;
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("ServicesLegend").'</td></tr>';
print '<tr '.$bc[$var].'><td nowrap>';
print img_statut(0,$langs->trans("ServiceStatusInitial")).'&nbsp;'.$langs->trans("ServiceStatusInitial").'<br />';
print img_statut(4,$langs->trans("ServiceStatusRunning")).'&nbsp;'.$langs->trans("ServiceStatusRunning").'<br />';
print img_statut(5,$langs->trans("ServiceStatusClosed")).'&nbsp;'.$langs->trans("ServiceStatusClosed").'<br />';
print '</td></tr>';
print '</table>';
print '</td><td width="70%" valign="top">';
// 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 '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td colspan="5">'.$langs->trans("LastContracts",5).'</td>';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("LastContracts",5).'</td>';
print '<td align="center">'.$langs->trans("DateCreation").'</td>';
print '<td align="center">'.$langs->trans("Status").'</td>';
print '<td width="16">'.img_statut(0,$langs->trans("ServiceStatusInitial")).'</td>';
print '<td width="16">'.img_statut(4,$langs->trans("ServiceStatusRunning")).'</td>';
print '<td width="16">'.img_statut(5,$langs->trans("ServiceStatusClosed")).'</td>';
print "</tr>\n";
$contratstatic=new Contrat($db);
@ -124,11 +134,15 @@ if ($result)
print "<tr $bc[$var]>";
print "<td><a href=\"fiche.php?id=$obj->cid\">";
print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'</a></td>';
print '<td align="center">'.$langs->trans("ServicesNomberShort",$obj->nb).'</td>';
print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'</a>';
if ($obj->nb_late) print img_warning($langs->trans("Late"));
print '</td>';
print '<td><a href="../comm/fiche.php?socid='.$obj->sidp.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>';
print '<td align="center">'.dolibarr_print_date($obj->datec).'</td>';
print '<td align="center">'.$contratstatic->LibStatut($obj->statut).'</td>';
print '<td align="center">'.($obj->nb_initial>0?$obj->nb_initial:'').'</td>';
print '<td align="center">'.($obj->nb_running+$obj->nb_late>0?$obj->nb_running+$obj->nb_late:'').'</td>';
print '<td align="center">'.($obj->nb_closed>0?$obj->nb_closed:'').'</td>';
print "</tr>\n";
$i++;
}
@ -191,13 +205,12 @@ else
print '<br>';
// 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 '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td colspan="4">'.$langs->trans("LastActivatedServices",min($num,$max)).'</td>';
print '<tr class="liste_titre"><td colspan="4">'.$langs->trans("LastModifiedServices",min($num,$max)).'</td>';
print "</tr>\n";
$var=True;
@ -216,7 +229,9 @@ if ( $db->query($sql) )
$var=!$var;
print "<tr $bc[$var]>";
print '<td width="50"><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.'</a></td>';
print '<td width="50" nowrap><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.'</a>';
if ($obj->nb_late) print img_warning($langs->trans("Late"));
print '</td>';
print '<td><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowService"),"service");
if ($obj->label) print ' '.dolibarr_trunc($obj->label,20).'</a></td>';
else print '</a> '.dolibarr_trunc($obj->note,20).'</td>';

View File

@ -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 '<table class="noborder"><tr><td>';
print '<form action="ligne.php?id='.$contrat->id.'&amp;ligne='.$_GET["ligne"].'&amp;action=active" method="post">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("ActivateService").'</td></tr>';
print '<tr class="liste_titre"><td colspan="5">'.$langs->trans("ActivateService").'</td></tr>';
// Definie date debut et fin par defaut
if ($_POST["remonth"]) $dateactstart = mktime(12, 0 , 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]);
@ -376,18 +379,21 @@ if ($id > 0)
print '<tr '.$bc[$var].'><td>'.$langs->trans("DateServiceActivate").'</td><td>';
print $form->select_date($dateactstart);
print '</td></tr>';
print '</td>';
print '<tr '.$bc[$var].'><td>'.$langs->trans("DateEndPlanned").'</td><td>';
print '<td>'.$langs->trans("DateEndPlanned").'</td><td>';
print $form->select_date($dateactend,"end");
print '</td></tr>';
print '</td>';
print '<td align="center" rowspan="2" valign="middle"><input type="submit" class="button" value="'.$langs->trans("Activate").'"></td>';
print '<tr '.$bc[$var].'><td>'.$langs->trans("Comment").'</td><td><input size="50" type="text" name="commentaire"></td></tr>';
print '</tr>';
print '<tr '.$bc[$var].'><td>'.$langs->trans("Comment").'</td><td colspan="3"><input size="70" type="text" name="commentaire" value="'.$_POST["commentaire"].'"></td></tr>';
print '<tr '.$bc[$var].'><td colspan="2" align="center"><input type="submit" class="button" value="'.$langs->trans("Activate").'"></td></tr>';
print '</table>';
print '</form><br></td></tr></table>';
print '</form>';
}
if ($user->rights->contrat->activer && $contrat->statut == 1 && $objp->statut == 4)
@ -424,7 +430,7 @@ if ($id > 0)
print '<td align="right"><input type="submit" class="button" value="'.$langs->trans("Close").'"></td></tr>';
print '</table>';
print '</form><br></td></tr></table>';
print '</form>';
}
}

View File

@ -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 '<table class="noborder" width="100%">';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
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 "</tr>\n";
$contratstatic=new Contrat($db);
$now=mktime();
$var=True;
while ($i < min($num,$limit))
print '<tr class="liste_titre">';
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 '<td width="16">'.img_statut(0,$langs->trans("ServiceStatusInitial")).'</td>';
print '<td width="16">'.img_statut(4,$langs->trans("ServiceStatusRunning")).'</td>';
print '<td width="16">'.img_statut(5,$langs->trans("ServiceStatusClosed")).'</td>';
print "</tr>\n";
$contratstatic=new Contrat($db);
$now=mktime();
$var=True;
while ($i < min($num,$limit))
{
$obj = $db->fetch_object($resql);
$var=!$var;
print "<tr $bc[$var]>";
print "<td><a href=\"fiche.php?id=$obj->cid\">";
print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'</a></td>';
print '<td align="center">'.$obj->nb.'</td>';
print '<td><a href="../comm/fiche.php?socid='.$obj->sidp.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>';
print '<td align="center">'.dolibarr_print_date($obj->datec).'</td>';
print '<td align="center">'.$contratstatic->LibStatut($obj->statut).'</td>';
print "</tr>\n";
$i++;
$obj = $db->fetch_object($resql);
$var=!$var;
print "<tr $bc[$var]>";
print "<td nowrap><a href=\"fiche.php?id=$obj->cid\">";
print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'</a>';
if ($obj->nb_late) print img_warning($langs->trans("Late"));
print '</td>';
print '<td><a href="../comm/fiche.php?socid='.$obj->sidp.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>';
print '<td align="center">'.dolibarr_print_date($obj->datec).'</td>';
print '<td align="center">'.$contratstatic->LibStatut($obj->statut).'</td>';
print '<td align="center">'.($obj->nb_initial>0?$obj->nb_initial:'').'</td>';
print '<td align="center">'.($obj->nb_running+$obj->nb_late>0?$obj->nb_running+$obj->nb_late:'').'</td>';
print '<td align="center">'.($obj->nb_closed>0?$obj->nb_closed:'').'</td>';
print "</tr>\n";
$i++;
}
$db->free($resql);
$db->free($resql);
print "</table>";
print "</table>";
}
else
{
dolibarr_print_error($db);
dolibarr_print_error($db);
}