From cddfdd9a97cfb4b34f7fb621d9aadde234936339 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 3 Jul 2005 13:07:59 +0000 Subject: [PATCH] =?UTF-8?q?New:=20Affiche=20picto=20warning=20pour=20les?= =?UTF-8?q?=20contrats=20qui=20ont=20au=20moins=20un=20service=20expir=E9,?= =?UTF-8?q?=20et=20pour=20les=20services=20expir=E9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/contrat/contrat.class.php | 53 ++++++++++++++++++ htdocs/contrat/enservice.php | 5 +- htdocs/contrat/fiche.php | 3 + htdocs/contrat/index.php | 65 ++++++++++++--------- htdocs/contrat/ligne.php | 26 +++++---- htdocs/contrat/liste.php | 96 +++++++++++++++++--------------- 6 files changed, 167 insertions(+), 81 deletions(-) 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 'statut'; 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 ''; print ''; print ''; - print "
'; -// Légende -$var=false; -print ''; -print ''; -print ''; -print '
'.$langs->trans("Legend").'
'; -print 'statut Statut initial
'; -print 'statut '.$langs->trans("ContractStatusRunning").'
'; -print 'statut '.$langs->trans("Closed").'
'; -print '
'; - -print '
'; - /* * Recherche Contrat */ @@ -85,22 +72,40 @@ if ($conf->contrat->enabled) { print '
'.$langs->trans("SearchAContract").'
'; print $langs->trans("Ref").':

\n"; + print "\n"; } +print '
'; + +// Légende +$var=false; +print ''; +print ''; +print ''; +print '
'.$langs->trans("ServicesLegend").'
'; +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 ''; // 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 ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; print "\n"; $contratstatic=new Contrat($db); @@ -124,11 +134,15 @@ if ($result) print ""; print "'; - print ''; + print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.''; + if ($obj->nb_late) print img_warning($langs->trans("Late")); + print ''; print ''; print ''; print ''; + print ''; + print ''; + print ''; 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 '
'.$langs->trans("LastContracts",5).'
'.$langs->trans("LastContracts",5).''.$langs->trans("DateCreation").''.$langs->trans("Status").''.img_statut(0,$langs->trans("ServiceStatusInitial")).''.img_statut(4,$langs->trans("ServiceStatusRunning")).''.img_statut(5,$langs->trans("ServiceStatusClosed")).'
cid\">"; - print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.''.$langs->trans("ServicesNomberShort",$obj->nb).''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.''.dolibarr_print_date($obj->datec).''.$contratstatic->LibStatut($obj->statut).''.($obj->nb_initial>0?$obj->nb_initial:'').''.($obj->nb_running+$obj->nb_late>0?$obj->nb_running+$obj->nb_late:'').''.($obj->nb_closed>0?$obj->nb_closed:'').'
'; - print ''; + print ''; print "\n"; $var=True; @@ -216,7 +229,9 @@ if ( $db->query($sql) ) $var=!$var; print ""; - print ''; + print ''; print ''; 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 '
'.$langs->trans("LastActivatedServices",min($num,$max)).'
'.$langs->trans("LastModifiedServices",min($num,$max)).'
'.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.''.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.''; + if ($obj->nb_late) print img_warning($langs->trans("Late")); + print ''.img_object($langs->trans("ShowService"),"service"); if ($obj->label) print ' '.dolibarr_trunc($obj->label,20).'
'; - print '
'; print ''; - print ''; + print ''; // 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 ''; + print ''; - print ''; + print ''; + + print ''; - print ''; + print ''; + + print ''; - print ''; print '
'.$langs->trans("ActivateService").'
'.$langs->trans("ActivateService").'
'.$langs->trans("DateServiceActivate").''; print $form->select_date($dateactstart); - print '
'.$langs->trans("DateEndPlanned").''; + print ''.$langs->trans("DateEndPlanned").''; print $form->select_date($dateactend,"end"); - print '
'.$langs->trans("Comment").'
'.$langs->trans("Comment").'
'; - 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 ''; + print ''; + print ''; + print "\n"; + + $contratstatic=new Contrat($db); + + $now=mktime(); + $var=True; + while ($i < min($num,$limit)) { - $obj = $db->fetch_object($resql); - $var=!$var; - print ""; - print "'; - print ''; - print ''; - print ''; - print ''; - - print "\n"; - $i++; + $obj = $db->fetch_object($resql); + $var=!$var; + print ""; + print "'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + $i++; } - $db->free($resql); + $db->free($resql); - print "
'.img_statut(0,$langs->trans("ServiceStatusInitial")).''.img_statut(4,$langs->trans("ServiceStatusRunning")).''.img_statut(5,$langs->trans("ServiceStatusClosed")).'
cid\">"; - print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.''.$obj->nb.''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.''.dolibarr_print_date($obj->datec).''.$contratstatic->LibStatut($obj->statut).'
cid\">"; + print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.''; + if ($obj->nb_late) print img_warning($langs->trans("Late")); + print ''.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.''.dolibarr_print_date($obj->datec).''.$contratstatic->LibStatut($obj->statut).''.($obj->nb_initial>0?$obj->nb_initial:'').''.($obj->nb_running+$obj->nb_late>0?$obj->nb_running+$obj->nb_late:'').''.($obj->nb_closed>0?$obj->nb_closed:'').'
"; + print ""; } else { - dolibarr_print_error($db); + dolibarr_print_error($db); }