2004-10-20 00:24:10 +02:00
< ? php
2007-05-04 21:44:44 +02:00
/* Copyright ( C ) 2003 - 2007 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2010-04-27 10:23:50 +02:00
* Copyright ( C ) 2004 - 2010 Laurent Destailleur < eldy @ users . sourceforge . net >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2005 - 2009 Regis Houssin < regis . houssin @ inodbox . com >
2021-01-25 17:06:25 +01:00
* Copyright ( C ) 2015 - 2021 Frederic France < frederic . france @ netlogic . fr >
2003-06-22 16:55:36 +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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2003-06-22 16:55:36 +02:00
* ( 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
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
2003-06-22 16:55:36 +02:00
*/
2005-01-31 13:21:44 +01:00
/**
2011-10-24 14:11:49 +02:00
* \file htdocs / core / boxes / box_clients . php
2010-04-27 10:23:50 +02:00
* \ingroup societes
* \brief Module de generation de l ' affichage de la box clients
2008-12-07 16:55:40 +01:00
*/
2005-01-31 13:21:44 +01:00
2012-08-23 02:04:35 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/boxes/modules_boxes.php' ;
2003-06-22 16:55:36 +02:00
2012-01-26 13:49:15 +01:00
/**
* Class to manage the box to show last thirdparties
*/
2012-02-20 09:42:57 +01:00
class box_clients extends ModeleBoxes
{
2020-10-31 14:32:18 +01:00
public $boxcode = " lastcustomers " ;
public $boximg = " object_company " ;
public $boxlabel = " BoxLastCustomers " ;
public $depends = array ( " societe " );
2005-02-27 18:57:21 +01:00
2018-08-22 10:51:55 +02:00
/**
2020-10-31 14:32:18 +01:00
* @ var DoliDB Database handler .
*/
public $db ;
2019-02-09 15:24:21 +01:00
2020-10-31 14:32:18 +01:00
public $enabled = 1 ;
2006-06-18 03:34:15 +02:00
2020-10-31 14:32:18 +01:00
public $info_box_head = array ();
public $info_box_contents = array ();
2008-12-07 16:55:40 +01:00
2014-10-12 15:49:14 +02:00
/**
* Constructor
*
* @ param DoliDB $db Database handler
2020-10-31 14:32:18 +01:00
* @ param string $param More parameters
2014-10-12 15:49:14 +02:00
*/
2019-02-28 00:15:32 +01:00
public function __construct ( $db , $param = '' )
2014-10-12 15:49:14 +02:00
{
global $conf , $user ;
$this -> db = $db ;
// disable box for such cases
2021-02-23 22:03:23 +01:00
if ( ! empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS )) {
$this -> enabled = 0 ; // disabled by this option
}
2017-06-12 14:09:00 +02:00
2020-02-21 17:53:37 +01:00
$this -> hidden = ! ( $user -> rights -> societe -> lire && empty ( $user -> socid ));
2014-10-12 15:49:14 +02:00
}
2008-12-07 16:55:40 +01:00
/**
2020-10-31 14:32:18 +01:00
* Load data for box to show them later
*
* @ param int $max Maximum number of records to load
* @ return void
2008-12-07 16:55:40 +01:00
*/
2019-02-28 00:15:32 +01:00
public function loadBox ( $max = 5 )
2008-12-07 16:55:40 +01:00
{
2022-03-18 12:59:07 +01:00
global $user , $langs , $hookmanager ;
2008-12-07 16:55:40 +01:00
$langs -> load ( " boxes " );
2020-02-21 17:53:37 +01:00
$this -> max = $max ;
2009-01-23 17:03:24 +01:00
2021-01-25 17:06:25 +01:00
include_once DOL_DOCUMENT_ROOT . '/societe/class/client.class.php' ;
2020-12-08 09:55:07 +01:00
$thirdpartystatic = new Client ( $this -> db );
2011-05-21 17:18:04 +02:00
2020-10-31 14:32:18 +01:00
$this -> info_box_head = array ( 'text' => $langs -> trans ( " BoxTitleLastModifiedCustomers " , $max ));
2008-12-07 16:55:40 +01:00
2021-02-23 22:03:23 +01:00
if ( $user -> rights -> societe -> lire ) {
2020-12-08 09:55:07 +01:00
$sql = " SELECT s.rowid as socid, s.nom as name, s.name_alias " ;
$sql .= " , s.code_client, s.code_compta, s.client " ;
$sql .= " , s.logo, s.email, s.entity " ;
$sql .= " , s.datec, s.tms, s.status " ;
2020-02-21 17:53:37 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " societe as s " ;
2021-10-22 22:15:59 +02:00
if ( empty ( $user -> rights -> societe -> client -> voir ) && ! $user -> socid ) {
2021-02-23 22:03:23 +01:00
$sql .= " , " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
}
2020-02-21 17:53:37 +01:00
$sql .= " WHERE s.client IN (1, 3) " ;
$sql .= " AND s.entity IN ( " . getEntity ( 'societe' ) . " ) " ;
2021-10-22 22:15:59 +02:00
if ( empty ( $user -> rights -> societe -> client -> voir ) && ! $user -> socid ) {
2021-08-23 17:41:11 +02:00
$sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . (( int ) $user -> id );
2021-02-23 22:03:23 +01:00
}
2022-03-18 12:59:07 +01:00
// Add where from hooks
$parameters = array ( 'socid' => $user -> socid , 'boxcode' => $this -> boxcode );
$reshook = $hookmanager -> executeHooks ( 'printFieldListWhere' , $parameters , $thirdpartystatic ); // Note that $action and $object may have been modified by hook
if ( empty ( $reshook )) {
if ( $user -> socid > 0 ) {
$sql .= " AND s.rowid = " . (( int ) $user -> socid );
}
2021-02-23 22:03:23 +01:00
}
2022-03-18 12:59:07 +01:00
$sql .= $hookmanager -> resPrint ;
2020-02-21 17:53:37 +01:00
$sql .= " ORDER BY s.tms DESC " ;
$sql .= $this -> db -> plimit ( $max , 0 );
2008-12-07 16:55:40 +01:00
2014-06-12 11:31:53 +02:00
dol_syslog ( get_class ( $this ) . " ::loadBox " , LOG_DEBUG );
2019-09-23 18:39:21 +02:00
$result = $this -> db -> query ( $sql );
2021-02-23 22:03:23 +01:00
if ( $result ) {
2019-09-23 18:39:21 +02:00
$num = $this -> db -> num_rows ( $result );
2009-01-23 17:03:24 +01:00
2015-02-02 21:09:30 +01:00
$line = 0 ;
2021-02-23 22:03:23 +01:00
while ( $line < $num ) {
2019-09-23 18:39:21 +02:00
$objp = $this -> db -> fetch_object ( $result );
2020-02-21 17:53:37 +01:00
$datec = $this -> db -> jdate ( $objp -> datec );
$datem = $this -> db -> jdate ( $objp -> tms );
2020-12-08 09:55:07 +01:00
2020-10-31 14:32:18 +01:00
$thirdpartystatic -> id = $objp -> socid ;
$thirdpartystatic -> name = $objp -> name ;
2020-12-08 09:55:07 +01:00
$thirdpartystatic -> name_alias = $objp -> name_alias ;
2020-10-31 14:32:18 +01:00
$thirdpartystatic -> code_client = $objp -> code_client ;
$thirdpartystatic -> code_compta = $objp -> code_compta ;
$thirdpartystatic -> client = $objp -> client ;
$thirdpartystatic -> logo = $objp -> logo ;
$thirdpartystatic -> email = $objp -> email ;
2020-02-17 19:09:58 +01:00
$thirdpartystatic -> entity = $objp -> entity ;
2015-01-25 01:20:58 +01:00
2020-10-31 14:32:18 +01:00
$this -> info_box_contents [ $line ][] = array (
2021-06-20 16:35:49 +02:00
'td' => 'class="tdoverflowmax150"' ,
2020-10-31 14:32:18 +01:00
'text' => $thirdpartystatic -> getNomUrl ( 1 ),
'asis' => 1 ,
);
2015-01-21 01:06:04 +01:00
2020-10-31 14:32:18 +01:00
$this -> info_box_contents [ $line ][] = array (
2021-05-25 00:29:32 +02:00
'td' => 'class="center nowraponall"' ,
'text' => dol_print_date ( $datem , " day " , 'tzuserrel' )
2020-10-31 14:32:18 +01:00
);
2015-01-21 01:06:04 +01:00
2020-10-31 14:32:18 +01:00
$this -> info_box_contents [ $line ][] = array (
'td' => 'class="right" width="18"' ,
'text' => $thirdpartystatic -> LibStatut ( $objp -> status , 3 )
);
2011-05-21 17:18:04 +02:00
2015-02-02 21:09:30 +01:00
$line ++ ;
2008-12-07 16:55:40 +01:00
}
2006-05-14 05:12:01 +02:00
2021-02-23 22:03:23 +01:00
if ( $num == 0 ) {
$this -> info_box_contents [ $line ][ 0 ] = array (
2020-05-14 14:56:15 +02:00
'td' => 'class="center opacitymedium"' ,
'text' => $langs -> trans ( " NoRecordedCustomers " )
2021-02-23 22:03:23 +01:00
);
}
2013-06-08 00:52:02 +02:00
2019-09-23 18:39:21 +02:00
$this -> db -> free ( $result );
2020-05-21 15:05:19 +02:00
} else {
2019-02-09 15:24:21 +01:00
$this -> info_box_contents [ 0 ][ 0 ] = array (
2020-10-31 14:32:18 +01:00
'td' => '' ,
'maxlength' => 500 ,
'text' => ( $this -> db -> error () . ' sql=' . $sql )
);
2008-12-07 16:55:40 +01:00
}
2020-05-21 15:05:19 +02:00
} else {
2017-06-10 00:05:47 +02:00
$this -> info_box_contents [ 0 ][ 0 ] = array (
2020-10-31 14:32:18 +01:00
'td' => 'class="nohover opacitymedium left"' ,
'text' => $langs -> trans ( " ReadPermissionNotAllowed " )
2017-06-10 00:05:47 +02:00
);
2008-12-07 16:55:40 +01:00
}
}
2005-02-27 17:45:59 +01:00
2011-11-23 18:28:14 +01:00
/**
* Method to show box
*
* @ param array $head Array with properties of box title
* @ param array $contents Array with properties of box lines
2016-06-27 13:57:10 +02:00
* @ param int $nooutput No print , only return string
2017-06-12 14:09:00 +02:00
* @ return string
2011-11-23 18:28:14 +01:00
*/
2020-10-31 14:32:18 +01:00
public function showBox ( $head = null , $contents = null , $nooutput = 0 )
{
2017-06-12 14:09:00 +02:00
return parent :: showBox ( $this -> info_box_head , $this -> info_box_contents , $nooutput );
2008-12-07 16:55:40 +01:00
}
2003-06-22 16:55:36 +02:00
}