2004-10-20 00:24:10 +02:00
< ? php
2024-11-04 23:53:20 +01:00
/* Copyright ( C ) 2003 - 2007 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2004 - 2010 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2005 - 2009 Regis Houssin < regis . houssin @ inodbox . com >
* Copyright ( C ) 2015 - 2024 Frédéric France < frederic . france @ free . fr >
* Copyright ( C ) 2024 MDW < mdeweerd @ users . noreply . github . com >
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
2023-07-25 23:09:52 +02:00
* \brief Module for generating box to show last customers
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
/**
2023-07-25 23:09:52 +02:00
* Class to manage the box to show last customers
2012-01-26 13:49:15 +01:00
*/
2012-02-20 09:42:57 +01:00
class box_clients extends ModeleBoxes
{
2023-07-25 23:09:52 +02:00
public $boxcode = " lastcustomers " ;
public $boximg = " object_company " ;
2020-10-31 14:32:18 +01:00
public $boxlabel = " BoxLastCustomers " ;
2023-07-25 23:09:52 +02:00
public $depends = array ( " societe " );
2005-02-27 18:57:21 +01:00
2020-10-31 14:32:18 +01:00
public $enabled = 1 ;
2006-06-18 03:34:15 +02: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
{
2024-06-05 14:13:32 +02:00
global $user ;
2014-10-12 15:49:14 +02:00
$this -> db = $db ;
// disable box for such cases
2023-11-27 11:39:32 +01:00
if ( getDolGlobalString ( 'SOCIETE_DISABLE_CUSTOMERS' )) {
2021-02-23 22:03:23 +01:00
$this -> enabled = 0 ; // disabled by this option
}
2017-06-12 14:09:00 +02:00
2022-09-06 15:37:00 +02:00
$this -> hidden = ! ( $user -> hasRight ( 'societe' , 'read' ) && empty ( $user -> socid ));
2024-10-14 11:56:59 +02:00
$this -> urltoaddentry = DOL_URL_ROOT . '/societe/card.php?action=create&type=c' ;
$this -> msgNoRecords = 'NoRecordedCustomers' ;
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
2024-06-05 14:13:32 +02:00
$this -> info_box_head = array (
'text' => $langs -> trans ( " BoxTitleLastModifiedCustomers " , $max ) . '<a class="paddingleft" href="' . DOL_URL_ROOT . '/societe/list.php?type=c&sortfield=s.tms&sortorder=DESC"><span class="badge">...</span></a>' ,
);
2008-12-07 16:55:40 +01:00
2022-09-10 11:02:48 +02:00
if ( $user -> hasRight ( 'societe' , 'lire' )) {
2020-12-08 09:55:07 +01:00
$sql = " SELECT s.rowid as socid, s.nom as name, s.name_alias " ;
2024-08-14 16:51:53 +02:00
$sql .= " , s.code_client, s.code_compta as code_compta_client, s.client " ;
2020-12-08 09:55:07 +01:00
$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 " ;
2025-01-13 11:58:16 +01:00
if ( empty ( $user -> socid ) && ! $user -> hasRight ( 'societe' , 'client' , 'voir' )) {
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' ) . " ) " ;
2025-01-13 11:58:16 +01:00
if ( empty ( $user -> socid ) && ! $user -> hasRight ( 'societe' , 'client' , 'voir' )) {
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 ;
2024-08-14 16:51:53 +02:00
$thirdpartystatic -> code_compta = $objp -> code_compta_client ;
$thirdpartystatic -> code_compta_client = $objp -> code_compta_client ;
2020-10-31 14:32:18 +01:00
$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 (
2022-05-15 22:29:19 +02:00
'td' => 'class="center nowraponall" title="' . dol_escape_htmltag ( $langs -> trans ( " DateModification " ) . ': ' . dol_print_date ( $datem , 'dayhour' , 'tzuserrel' )) . '"' ,
2021-05-25 00:29:32 +02:00
'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
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' => '' ,
2024-08-18 18:16:08 +02:00
'maxlength' => 500 ,
2020-10-31 14:32:18 +01:00
'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 (
2023-12-05 15:21:26 +01:00
'td' => 'class="nohover left"' ,
'text' => '<span class="opacitymedium">' . $langs -> trans ( " ReadPermissionNotAllowed " ) . '</span>'
2017-06-10 00:05:47 +02:00
);
2008-12-07 16:55:40 +01:00
}
}
2005-02-27 17:45:59 +01:00
2024-09-28 12:09:35 +02:00
2011-11-23 18:28:14 +01:00
/**
2024-09-28 12:09:35 +02:00
* Method to show box . Called when the box needs to be displayed .
2011-11-23 18:28:14 +01:00
*
2024-09-28 12:09:35 +02:00
* @ param ? array < array { text ? : string , sublink ? : string , subtext ? : string , subpicto ? : ? string , picto ? : string , nbcol ? : int , limit ? : int , subclass ? : string , graph ? : int < 0 , 1 > , target ? : string } > $head Array with properties of box title
* @ param ? array < array { tr ? : string , td ? : string , target ? : string , text ? : string , text2 ? : string , textnoformat ? : string , tooltip ? : string , logo ? : string , url ? : string , maxlength ? : int , asis ? : int < 0 , 1 > } > $contents Array with properties of box lines
2024-08-18 18:16:08 +02:00
* @ param int < 0 , 1 > $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
}