2005-07-03 23:58:20 +02:00
< ? php
/* Copyright ( C ) 2001 - 2004 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2009-02-09 20:31:06 +01:00
* Copyright ( C ) 2004 - 2009 Laurent Destailleur < eldy @ users . sourceforge . net >
2009-04-27 22:37:50 +02:00
* Copyright ( C ) 2005 - 2009 Regis Houssin < regis @ dolibarr . fr >
2005-07-03 23:58:20 +02:00
*
* 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 .
*/
/**
2009-07-08 12:10:35 +02:00
* \file htdocs / contrat / services . php
* \ingroup contrat
2009-07-22 15:35:09 +02:00
* \brief Page to list services in contracts
2009-07-08 12:10:35 +02:00
* \version $Id $
*/
2005-07-03 23:58:20 +02:00
require ( " ./pre.inc.php " );
2006-03-18 18:41:36 +01:00
require_once ( DOL_DOCUMENT_ROOT . " /contrat/contrat.class.php " );
2009-10-10 18:26:06 +02:00
require_once ( DOL_DOCUMENT_ROOT . " /product.class.php " );
2008-12-15 19:48:42 +01:00
require_once ( DOL_DOCUMENT_ROOT . " /societe.class.php " );
2005-07-03 23:58:20 +02:00
$langs -> load ( " products " );
$langs -> load ( " companies " );
$mode = isset ( $_GET [ " mode " ]) ? $_GET [ " mode " ] : $_POST [ " mode " ];
$sortfield = isset ( $_GET [ " sortfield " ]) ? $_GET [ " sortfield " ] : $_POST [ " sortfield " ];
$sortorder = isset ( $_GET [ " sortorder " ]) ? $_GET [ " sortorder " ] : $_POST [ " sortorder " ];
$page = isset ( $_GET [ " page " ]) ? $_GET [ " page " ] : $_POST [ " page " ];
2005-08-13 01:31:45 +02:00
if ( $page == - 1 ) { $page = 0 ; }
$limit = $conf -> liste_limit ;
$offset = $limit * $page ;
2005-07-03 23:58:20 +02:00
2005-08-13 01:31:45 +02:00
if ( ! $sortfield ) $sortfield = " c.rowid " ;
if ( ! $sortorder ) $sortorder = " ASC " ;
2005-11-14 21:13:25 +01:00
$filter = isset ( $_GET [ " filter " ]) ? $_GET [ " filter " ] : $_POST [ " filter " ];
2005-08-13 01:31:45 +02:00
$search_nom = isset ( $_GET [ " search_nom " ]) ? $_GET [ " search_nom " ] : $_POST [ " search_nom " ];
$search_contract = isset ( $_GET [ " search_contract " ]) ? $_GET [ " search_contract " ] : $_POST [ " search_contract " ];
2005-08-19 18:19:40 +02:00
$search_service = isset ( $_GET [ " search_service " ]) ? $_GET [ " search_service " ] : $_POST [ " search_service " ];
2005-07-03 23:58:20 +02:00
$statut = isset ( $_GET [ " statut " ]) ? $_GET [ " statut " ] : 1 ;
$socid = $_GET [ " socid " ];
2008-02-25 17:30:43 +01:00
// Security check
$contratid = isset ( $_GET [ " id " ]) ? $_GET [ " id " ] : '' ;
2008-02-25 21:03:21 +01:00
if ( $user -> societe_id ) $socid = $user -> societe_id ;
2008-03-01 02:26:41 +01:00
$result = restrictedArea ( $user , 'contrat' , $contratid , '' );
2008-02-25 17:30:43 +01:00
2005-07-03 23:58:20 +02:00
2006-03-18 18:41:36 +01:00
$staticcontrat = new Contrat ( $db );
$staticcontratligne = new ContratLigne ( $db );
2008-12-15 19:48:42 +01:00
$companystatic = new Societe ( $db );
2005-07-03 23:58:20 +02:00
2006-03-18 18:41:36 +01:00
/*
2008-09-06 00:15:46 +02:00
* View
2006-03-18 18:41:36 +01:00
*/
2008-09-06 00:15:46 +02:00
2009-07-08 12:10:35 +02:00
$now = dol_now ( 'tzref' );
2008-10-28 21:05:23 +01:00
2008-10-20 23:42:11 +02:00
$form = new Form ( $db );
2005-08-13 01:31:45 +02:00
llxHeader ();
2005-07-03 23:58:20 +02:00
2008-10-28 21:05:23 +01:00
$sql = " SELECT c.rowid as cid, c.ref, c.statut as cstatut, " ;
$sql .= " s.rowid as socid, s.nom, " ;
2009-10-10 18:26:06 +02:00
$sql .= " cd.rowid, cd.description, cd.statut, " ;
$sql .= " p.rowid as pid, p.label as label, p.fk_product_type as ptype, " ;
2008-03-01 02:26:41 +01:00
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " sc.fk_soc, sc.fk_user, " ;
2005-07-03 23:58:20 +02:00
$sql .= " " . $db -> pdate ( " cd.date_ouverture_prevue " ) . " as date_ouverture_prevue, " ;
$sql .= " " . $db -> pdate ( " cd.date_ouverture " ) . " as date_ouverture, " ;
2005-07-15 02:40:13 +02:00
$sql .= " " . $db -> pdate ( " cd.date_fin_validite " ) . " as date_fin_validite, " ;
$sql .= " " . $db -> pdate ( " cd.date_cloture " ) . " as date_cloture " ;
2006-06-12 01:21:59 +02:00
$sql .= " FROM " . MAIN_DB_PREFIX . " contrat as c, " ;
$sql .= " " . MAIN_DB_PREFIX . " societe as s, " ;
2008-03-01 02:26:41 +01:00
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " " . MAIN_DB_PREFIX . " societe_commerciaux as sc, " ;
2006-06-12 01:21:59 +02:00
$sql .= " " . MAIN_DB_PREFIX . " contratdet as cd " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " product as p ON cd.fk_product = p.rowid " ;
2008-02-25 17:48:16 +01:00
$sql .= " WHERE " ;
$sql .= " c.rowid = cd.fk_contrat " ;
2007-06-12 00:51:47 +02:00
$sql .= " AND c.fk_soc = s.rowid " ;
2009-04-27 22:37:50 +02:00
$sql .= " AND s.entity = " . $conf -> entity ;
2008-03-01 02:26:41 +01:00
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . $user -> id ;
2005-07-03 23:58:20 +02:00
if ( $mode == " 0 " ) $sql .= " AND cd.statut = 0 " ;
if ( $mode == " 4 " ) $sql .= " AND cd.statut = 4 " ;
if ( $mode == " 5 " ) $sql .= " AND cd.statut = 5 " ;
2009-07-22 15:35:09 +02:00
if ( $filter == " expired " ) $sql .= " AND date_fin_validite < " . $db -> idate ( $now );
2006-02-25 13:25:26 +01:00
if ( $search_nom ) $sql .= " AND s.nom like '% " . addslashes ( $search_nom ) . " %' " ;
if ( $search_contract ) $sql .= " AND c.rowid = ' " . addslashes ( $search_contract ) . " ' " ;
2006-06-12 01:21:59 +02:00
if ( $search_service ) $sql .= " AND (p.ref like '% " . addslashes ( $search_service ) . " %' OR p.description like '% " . addslashes ( $search_service ) . " %') " ;
2007-06-12 00:51:47 +02:00
if ( $socid > 0 ) $sql .= " AND s.rowid = " . $socid ;
2009-02-20 23:53:15 +01:00
$filter_date1 = dol_mktime ( 0 , 0 , 0 , $_REQUEST [ 'op1month' ], $_REQUEST [ 'op1day' ], $_REQUEST [ 'op1year' ]);
$filter_date2 = dol_mktime ( 0 , 0 , 0 , $_REQUEST [ 'op2month' ], $_REQUEST [ 'op2day' ], $_REQUEST [ 'op2year' ]);
2008-10-20 23:42:11 +02:00
if ( ! empty ( $_REQUEST [ 'filter_op1' ]) && $_REQUEST [ 'filter_op1' ] != - 1 && $filter_date1 != '' ) $sql .= " AND date_ouverture_prevue " . $_REQUEST [ 'filter_op1' ] . " " . $db -> idate ( $filter_date1 );
if ( ! empty ( $_REQUEST [ 'filter_op2' ]) && $_REQUEST [ 'filter_op2' ] != - 1 && $filter_date2 != '' ) $sql .= " AND date_fin_validite " . $_REQUEST [ 'filter_op2' ] . " " . $db -> idate ( $filter_date2 );
2008-12-15 19:48:42 +01:00
$sql .= $db -> order ( $sortfield , $sortorder );
2005-07-03 23:58:20 +02:00
$sql .= $db -> plimit ( $limit + 1 , $offset );
2008-02-25 17:48:16 +01:00
//print $sql;
2009-02-20 23:53:15 +01:00
dol_syslog ( " contrat/services.php sql= " . $sql );
2005-07-03 23:58:20 +02:00
$resql = $db -> query ( $sql );
if ( $resql )
{
2009-07-08 12:10:35 +02:00
$num = $db -> num_rows ( $resql );
$i = 0 ;
$param = '' ;
if ( $search_contract ) $param .= '&search_contract=' . urlencode ( $search_contract );
if ( $search_nom ) $param .= '&search_nom=' . urlencode ( $search_nom );
if ( $search_service ) $param .= '&search_service=' . urlencode ( $search_service );
if ( $mode ) $param .= '&mode=' . $mode ;
if ( $filter ) $param .= '&filter=' . $filter ;
if ( ! empty ( $_REQUEST [ 'filter_op1' ]) && $_REQUEST [ 'filter_op1' ] != - 1 ) $param .= '&filter_op1=' . urlencode ( $_REQUEST [ 'filter_op1' ]);
if ( ! empty ( $_REQUEST [ 'filter_op2' ]) && $_REQUEST [ 'filter_op2' ] != - 1 ) $param .= '&filter_op2=' . urlencode ( $_REQUEST [ 'filter_op2' ]);
if ( $filter_date1 != '' ) $param .= '&op1day=' . $_REQUEST [ 'op1day' ] . '&op1month=' . $_REQUEST [ 'op1month' ] . '&op1year=' . $_REQUEST [ 'op1year' ];
if ( $filter_date2 != '' ) $param .= '&op2day=' . $_REQUEST [ 'op2day' ] . '&op2month=' . $_REQUEST [ 'op2month' ] . '&op2year=' . $_REQUEST [ 'op2year' ];
2009-07-22 15:35:09 +02:00
$title = $langs -> trans ( " ListOfServices " );
if ( $mode == " 0 " ) $title = $langs -> trans ( " ListOfInactiveServices " ); // Must use == "0"
if ( $mode == " 4 " && $filter != " expired " ) $title = $langs -> trans ( " ListOfRunningServices " );
if ( $mode == " 4 " && $filter == " expired " ) $title = $langs -> trans ( " ListOfExpiredServices " );
if ( $mode == " 5 " ) $title = $langs -> trans ( " ListOfClosedServices " );
print_barre_liste ( $title , $page , " services.php " , $param , $sortfield , $sortorder , '' , $num );
2009-07-08 12:10:35 +02:00
print '<table class="liste" width="100%">' ;
print '<tr class="liste_titre">' ;
print_liste_field_titre ( $langs -> trans ( " Contract " ), " services.php " , " c.rowid " , $param , " " , " " , $sortfield , $sortorder );
print_liste_field_titre ( $langs -> trans ( " Service " ), " services.php " , " p.description " , $param , " " , " " , $sortfield , $sortorder );
print_liste_field_titre ( $langs -> trans ( " Company " ), " services.php " , " s.nom " , $param , " " , " " , $sortfield , $sortorder );
// Date debut
if ( $mode == " 0 " ) print_liste_field_titre ( $langs -> trans ( " DateStartPlannedShort " ), " services.php " , " cd.date_ouverture_prevue " , $param , '' , ' align="center"' , $sortfield , $sortorder );
if ( $mode == " " || $mode > 0 ) print_liste_field_titre ( $langs -> trans ( " DateStartRealShort " ), " services.php " , " cd.date_ouverture " , $param , '' , ' align="center"' , $sortfield , $sortorder );
// Date fin
if ( $mode == " " || $mode < 5 ) print_liste_field_titre ( $langs -> trans ( " DateEndPlannedShort " ), " services.php " , " cd.date_fin_validite " , $param , '' , ' align="center"' , $sortfield , $sortorder );
else print_liste_field_titre ( $langs -> trans ( " DateEndRealShort " ), " services.php " , " cd.date_cloture " , $param , '' , ' align="center"' , $sortfield , $sortorder );
print_liste_field_titre ( $langs -> trans ( " Status " ), " services.php " , " cd.statut,c.statut " , $param , " " , " align= \" right \" " , $sortfield , $sortorder );
print " </tr> \n " ;
print '<form method="POST" action="services.php">' ;
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
2009-08-23 22:47:29 +02:00
2009-07-08 12:10:35 +02:00
print '<tr class="liste_titre">' ;
print '<td class="liste_titre">' ;
print '<input type="hidden" name="filter" value="' . $filter . '">' ;
print '<input type="hidden" name="mode" value="' . $mode . '">' ;
2009-10-10 18:26:06 +02:00
print '<input type="text" class="flat" size="3" name="search_contract" value="' . $search_contract . '">' ;
2009-07-08 12:10:35 +02:00
print '</td>' ;
print '<td class="liste_titre">' ;
2009-10-10 18:26:06 +02:00
print '<input type="text" class="flat" size="18" name="search_service" value="' . $search_service . '">' ;
2009-07-08 12:10:35 +02:00
print '</td>' ;
print '<td class="liste_titre">' ;
2009-10-10 18:26:06 +02:00
print '<input type="text" class="flat" size="24" name="search_nom" value="' . $search_nom . '">' ;
2009-07-08 12:10:35 +02:00
print '</td>' ;
print '<td class="liste_titre" align="center">' ;
$arrayofoperators = array ( '<' => '<' , '>' => '>' );
2008-10-20 23:42:11 +02:00
print $form -> select_array ( 'filter_op1' , $arrayofoperators , $_REQUEST [ 'filter_op1' ], 1 );
2009-07-08 12:10:35 +02:00
print ' ' ;
$filter_date1 = dol_mktime ( 0 , 0 , 0 , $_REQUEST [ 'op1month' ], $_REQUEST [ 'op1day' ], $_REQUEST [ '"op1year' ]);
print $form -> select_date ( $filter_date1 , 'op1' , 0 , 0 , 1 );
print '</td>' ;
print '<td class="liste_titre" align="center">' ;
$arrayofoperators = array ( '<' => '<' , '>' => '>' );
print $form -> select_array ( 'filter_op2' , $arrayofoperators , $_REQUEST [ 'filter_op2' ], 1 );
print ' ' ;
$filter_date2 = dol_mktime ( 0 , 0 , 0 , $_REQUEST [ 'op2month' ], $_REQUEST [ 'op2day' ], $_REQUEST [ 'op2year' ]);
print $form -> select_date ( $filter_date2 , 'op2' , 0 , 0 , 1 );
print '</td>' ;
print '<td class="liste_titre" align="right"><input class="liste_titre" type="image" src="' . DOL_URL_ROOT . '/theme/' . $conf -> theme . '/img/search.png" alt="' . $langs -> trans ( " Search " ) . '">' ;
print " </td> " ;
print " </tr> \n " ;
print '</form>' ;
2009-10-10 18:26:06 +02:00
$contractstatic = new Contrat ( $db );
$productstatic = new Product ( $db );
2009-07-08 12:10:35 +02:00
$var = True ;
while ( $i < min ( $num , $limit ))
{
$obj = $db -> fetch_object ( $resql );
$var =! $var ;
print " <tr $bc[$var] > " ;
print '<td>' ;
$contractstatic -> id = $obj -> cid ;
$contractstatic -> ref = $obj -> ref ? $obj -> ref : $obj -> cid ;
2009-08-23 22:47:29 +02:00
print $contractstatic -> getNomUrl ( 1 , 16 );
2009-07-08 12:10:35 +02:00
print '</td>' ;
// Service
print '<td>' ;
2009-10-10 18:26:06 +02:00
$productstatic -> id = $obj -> pid ;
$productstatic -> type = $obj -> ptype ;
$productstatic -> ref = $obj -> label ? $obj -> label : $obj -> pid ;
2009-10-10 18:34:33 +02:00
print $productstatic -> getNomUrl ( 1 , '' , 20 );
2009-07-08 12:10:35 +02:00
print '</td>' ;
// Third party
print '<td>' ;
$companystatic -> id = $obj -> socid ;
$companystatic -> nom = $obj -> nom ;
$companystatic -> client = 1 ;
2009-08-23 22:47:29 +02:00
print $companystatic -> getNomUrl ( 1 , 'customer' , 28 );
2008-12-15 19:48:42 +01:00
print '</td>' ;
2009-02-09 20:31:06 +01:00
2009-07-08 12:10:35 +02:00
// Start date
if ( $mode == " 0 " ) {
print '<td align="center">' ;
print ( $obj -> date_ouverture_prevue ? dol_print_date ( $obj -> date_ouverture_prevue ) : ' ' );
if ( $obj -> date_ouverture_prevue && ( $obj -> date_ouverture_prevue < ( $now - $conf -> contrat -> services -> inactifs -> warning_delay )))
print img_picto ( $langs -> trans ( " Late " ), " warning " );
else print ' ' ;
print '</td>' ;
}
if ( $mode == " " || $mode > 0 ) print '<td align="center">' . ( $obj -> date_ouverture ? dol_print_date ( $obj -> date_ouverture ) : ' ' ) . '</td>' ;
// Date fin
if ( $mode == " " || $mode < 5 ) print '<td align="center">' . ( $obj -> date_fin_validite ? dol_print_date ( $obj -> date_fin_validite ) : ' ' );
else print '<td align="center">' . dol_print_date ( $obj -> date_cloture );
// Icone warning
if ( $obj -> date_fin_validite && $obj -> date_fin_validite < ( $now - $conf -> contrat -> services -> expires -> warning_delay ) && $obj -> statut < 5 ) print img_warning ( $langs -> trans ( " Late " ));
else print ' ' ;
print '</td>' ;
print '<td align="right" nowrap="nowrap">' ;
2009-07-22 15:35:09 +02:00
if ( $obj -> cstatut == 0 ) // If contract is draft, we say line is also draft
2009-07-08 12:10:35 +02:00
{
print $contractstatic -> LibStatut ( 0 , 5 ,( $obj -> date_fin_validite && $obj -> date_fin_validite < $now ));
}
else
{
print '<a href="' . DOL_URL_ROOT . '/contrat/fiche.php?id=' . $obj -> cid . '&line=' . $obj -> rowid . '">' ;
print $staticcontratligne -> LibStatut ( $obj -> statut , 5 ,( $obj -> date_fin_validite && $obj -> date_fin_validite < $now ) ? 1 : 0 );
print '</a>' ;
}
print '</td>' ;
print " </tr> \n " ;
$i ++ ;
}
$db -> free ( $resql );
print " </table> " ;
2005-07-03 23:58:20 +02:00
}
else
{
2009-07-08 12:10:35 +02:00
dol_print_error ( $db );
2005-07-03 23:58:20 +02:00
}
$db -> close ();
llxFooter ( '$Date$ - $Revision$' );
?>