2004-10-20 00:24:10 +02:00
< ? php
2006-05-14 05:12:01 +02:00
/* Copyright ( C ) 2004 - 2006 Destailleur Laurent < eldy @ users . sourceforge . net >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2005 - 2009 Regis Houssin < regis . houssin @ inodbox . com >
2019-09-17 23:03:37 +02:00
* Copyright ( C ) 2015 - 2019 Frederic France < frederic . france @ free . fr >
2020-02-17 19:23:48 +01:00
* Copyright ( C ) 2020 Pierre Ardoin < mapiolca @ me . com >
2004-01-24 15:41:42 +01: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
2004-01-24 15:41:42 +01: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 />.
2004-01-24 15:41:42 +01:00
*/
2005-01-31 13:21:44 +01:00
/**
2011-10-24 14:11:49 +02:00
* \file htdocs / core / boxes / box_fournisseurs . php
2011-08-27 18:15:06 +02:00
* \ingroup fournisseurs
* \brief Module to generate box of suppliers
*/
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' ;
2004-01-24 15:41:42 +01:00
2012-01-26 13:49:15 +01:00
/**
* Class to manage the box to show last suppliers
*/
2012-02-20 09:42:57 +01:00
class box_fournisseurs extends ModeleBoxes
{
2020-10-31 14:32:18 +01:00
public $boxcode = " lastsuppliers " ;
public $boximg = " object_company " ;
public $boxlabel = " BoxLastSuppliers " ;
public $depends = array ( " fournisseur " );
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 $param ;
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 ();
2005-02-27 17:45:59 +01:00
2005-02-27 18:57:21 +01:00
2020-10-31 14:32:18 +01:00
/**
* Constructor
*
* @ param DoliDB $db Database handler
* @ param string $param More parameters
*/
public function __construct ( $db , $param )
{
global $user ;
2017-06-12 14:09:00 +02:00
2020-10-31 14:32:18 +01:00
$this -> db = $db ;
2017-06-12 14:09:00 +02:00
2020-10-31 14:32:18 +01:00
$this -> hidden = ! ( $user -> rights -> societe -> lire && empty ( $user -> socid ));
}
2017-06-12 14:09:00 +02:00
2020-10-31 14:32:18 +01:00
/**
2011-11-23 18:28:14 +01:00
* Load data into info_box_contents array to show array later .
*
* @ param int $max Maximum number of records to load
2020-10-31 14:32:18 +01:00
* @ return void
*/
public function loadBox ( $max = 5 )
{
2022-03-18 12:59:07 +01:00
global $conf , $user , $langs , $hookmanager ;
2020-10-31 14:32:18 +01:00
$langs -> load ( " boxes " );
2005-02-27 17:45:59 +01:00
2020-02-21 17:53:37 +01:00
$this -> max = $max ;
2009-01-23 17:03:24 +01:00
2015-05-04 13:10:45 +02:00
include_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.class.php' ;
2020-12-08 09:55:07 +01:00
$thirdpartystatic = new Fournisseur ( $this -> db );
2011-05-21 17:18:04 +02:00
2019-01-27 11:55:16 +01:00
$this -> info_box_head = array ( 'text' => $langs -> trans ( " BoxTitleLastModifiedSuppliers " , $max ));
2005-02-27 17:45:59 +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_fournisseur, s.code_compta_fournisseur, s.fournisseur " ;
$sql .= " , s.logo, s.email, s.entity " ;
$sql .= " , s.datec, s.tms, s.status " ;
2020-10-31 14:32:18 +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-10-31 14:32:18 +01:00
$sql .= " WHERE s.fournisseur = 1 " ;
$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-10-31 14:32:18 +01:00
$sql .= " ORDER BY s.tms DESC " ;
$sql .= $this -> db -> plimit ( $max , 0 );
$result = $this -> db -> query ( $sql );
2021-02-23 22:03:23 +01:00
if ( $result ) {
2020-10-31 14:32:18 +01:00
$num = $this -> db -> num_rows ( $result );
$line = 0 ;
2021-02-23 22:03:23 +01:00
while ( $line < $num ) {
2020-10-31 14:32:18 +01:00
$objp = $this -> db -> fetch_object ( $result );
$datec = $this -> db -> jdate ( $objp -> datec );
$datem = $this -> db -> jdate ( $objp -> tms );
2020-12-08 09:55:07 +01:00
$thirdpartystatic -> id = $objp -> socid ;
$thirdpartystatic -> name = $objp -> name ;
$thirdpartystatic -> name_alias = $objp -> name_alias ;
$thirdpartystatic -> code_fournisseur = $objp -> code_fournisseur ;
$thirdpartystatic -> code_compta_fournisseur = $objp -> code_compta_fournisseur ;
$thirdpartystatic -> fournisseur = $objp -> fournisseur ;
$thirdpartystatic -> logo = $objp -> logo ;
$thirdpartystatic -> email = $objp -> email ;
$thirdpartystatic -> entity = $objp -> entity ;
2020-10-31 14:32:18 +01:00
2021-02-23 22:03:23 +01:00
$this -> info_box_contents [ $line ][] = array (
2020-10-31 14:32:18 +01:00
'td' => '' ,
2020-12-08 09:55:07 +01:00
'text' => $thirdpartystatic -> getNomUrl ( 1 , '' , 40 ),
2020-10-31 14:32:18 +01:00
'asis' => 1 ,
);
$this -> info_box_contents [ $line ][] = array (
2022-06-28 12:26:49 +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
);
$this -> info_box_contents [ $line ][] = array (
'td' => 'class="right" width="18"' ,
'text' => $thirdpartystatic -> LibStatut ( $objp -> status , 3 ),
);
$line ++ ;
}
2021-01-05 10:39:53 +01:00
if ( $num == 0 ) {
$langs -> load ( " suppliers " );
$this -> info_box_contents [ $line ][ 0 ] = array (
'td' => 'class="center opacitymedium"' ,
'text' => $langs -> trans ( " NoRecordedSuppliers " ),
);
}
2020-10-31 14:32:18 +01:00
$this -> db -> free ( $result );
} else {
$this -> info_box_contents [ 0 ][ 0 ] = array (
'td' => '' ,
'maxlength' => 500 ,
'text' => ( $this -> db -> error () . ' sql=' . $sql ),
);
}
} else {
$this -> info_box_contents [ 0 ][ 0 ] = array (
'td' => 'class="nohover opacitymedium left"' ,
'text' => $langs -> trans ( " ReadPermissionNotAllowed " )
);
}
}
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 )
{
return parent :: showBox ( $this -> info_box_head , $this -> info_box_contents , $nooutput );
}
2004-01-24 15:41:42 +01:00
}