2010-11-17 00:49:25 +01:00
< ? php
/* Copyright ( C ) 2001 - 2006 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2018-10-12 11:02:03 +02:00
* Copyright ( C ) 2004 - 2018 Laurent Destailleur < eldy @ users . sourceforge . net >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ inodbox . com >
2019-06-18 14:07:52 +02:00
* Copyright ( C ) 2014 Charles - Fr Benke < charles . fr @ benke . fr >
2015-05-22 14:28:02 +02:00
* Copyright ( C ) 2015 Jean - François Ferry < jfefe @ aternatik . fr >
2016-01-22 03:18:51 +01:00
* Copyright ( C ) 2016 Ferran Marcet < fmarcet @ 2 byte . es >
2019-06-18 14:07:52 +02:00
* Copyright ( C ) 2019 Nicolas ZABOURI < info @ inovea - conseil . com >
2010-11-17 00:49:25 +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
2010-11-17 00:49:25 +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 />.
2010-11-17 00:49:25 +01:00
*/
/**
* \file htdocs / societe / index . php
* \ingroup societe
* \brief Home page for third parties area
*/
2012-08-22 23:24:21 +02:00
require '../main.inc.php' ;
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php' ;
2010-11-17 00:49:25 +01:00
2019-06-18 14:07:52 +02:00
$hookmanager = new HookManager ( $db );
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array
$hookmanager -> initHooks ( array ( 'thirdpartiesindex' ));
2011-09-26 16:32:13 +02:00
$langs -> load ( " companies " );
2019-01-27 11:55:16 +01:00
$socid = GETPOST ( 'socid' , 'int' );
2020-04-10 10:59:32 +02:00
if ( $user -> socid ) $socid = $user -> socid ;
2011-09-26 16:32:13 +02:00
2010-11-17 00:49:25 +01:00
// Security check
2019-11-02 01:17:45 +01:00
$result = restrictedArea ( $user , 'societe' , 0 , '' , '' , '' , '' );
2010-11-17 00:49:25 +01:00
$thirdparty_static = new Societe ( $db );
2011-09-26 16:32:13 +02:00
2010-11-17 00:49:25 +01:00
/*
* View
*/
$transAreaType = $langs -> trans ( " ThirdPartiesArea " );
2019-11-02 01:17:45 +01:00
$helpurl = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Terceros' ;
2010-11-17 00:49:25 +01:00
2019-01-27 11:55:16 +01:00
llxHeader ( " " , $langs -> trans ( " ThirdParties " ), $helpurl );
2019-11-02 01:17:45 +01:00
$linkback = '' ;
2019-09-28 06:02:25 +02:00
print load_fiche_titre ( $transAreaType , $linkback , 'companies' );
2010-11-17 00:49:25 +01:00
2013-03-30 14:27:13 +01:00
print '<div class="fichecenter"><div class="fichethirdleft">' ;
2013-03-16 14:53:15 +01:00
2010-11-17 00:49:25 +01:00
/*
2011-03-26 14:18:01 +01:00
* Statistics area
2010-11-17 00:49:25 +01:00
*/
2017-11-23 18:47:24 +01:00
2012-07-09 12:31:21 +02:00
$third = array (
'customer' => 0 ,
'prospect' => 0 ,
'supplier' => 0 ,
'other' => 0
);
2019-11-02 01:17:45 +01:00
$total = 0 ;
2010-11-17 00:49:25 +01:00
$sql = " SELECT s.rowid, s.client, s.fournisseur " ;
2019-11-02 01:17:45 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " societe as s " ;
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " , " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
$sql .= ' WHERE s.entity IN (' . getEntity ( 'societe' ) . ')' ;
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . $user -> id ;
if ( $socid ) $sql .= " AND s.rowid = " . $socid ;
if ( ! $user -> rights -> fournisseur -> lire ) $sql .= " AND (s.fournisseur <> 1 OR s.client <> 0) " ; // client=0, fournisseur=0 must be visible
2012-01-17 23:49:25 +01:00
//print $sql;
2010-11-17 00:49:25 +01:00
$result = $db -> query ( $sql );
if ( $result )
{
2020-09-07 10:18:17 +02:00
while ( $objp = $db -> fetch_object ( $result ))
{
$found = 0 ;
if ( ! empty ( $conf -> societe -> enabled ) && $user -> rights -> societe -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS ) && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS_STATS ) && ( $objp -> client == 2 || $objp -> client == 3 )) { $found = 1 ; $third [ 'prospect' ] ++ ; }
if ( ! empty ( $conf -> societe -> enabled ) && $user -> rights -> societe -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS ) && empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS_STATS ) && ( $objp -> client == 1 || $objp -> client == 3 )) { $found = 1 ; $third [ 'customer' ] ++ ; }
if ( ! empty ( $conf -> fournisseur -> enabled ) && $user -> rights -> fournisseur -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_SUPPLIERS_STATS ) && $objp -> fournisseur ) { $found = 1 ; $third [ 'supplier' ] ++ ; }
if ( ! empty ( $conf -> societe -> enabled ) && $objp -> client == 0 && $objp -> fournisseur == 0 ) { $found = 1 ; $third [ 'other' ] ++ ; }
if ( $found ) $total ++ ;
}
2020-05-21 15:05:19 +02:00
} else dol_print_error ( $db );
2010-11-17 00:49:25 +01:00
2018-02-15 12:57:04 +01:00
print '<div class="div-table-responsive-no-min">' ;
2019-11-05 21:24:41 +01:00
print '<table class="noborder nohover centpercent">' . " \n " ;
2011-11-03 01:59:13 +01:00
print '<tr class="liste_titre"><th colspan="2">' . $langs -> trans ( " Statistics " ) . '</th></tr>' ;
2019-11-02 01:17:45 +01:00
if ( ! empty ( $conf -> use_javascript_ajax ) && (( round ( $third [ 'prospect' ]) ? 1 : 0 ) + ( round ( $third [ 'customer' ]) ? 1 : 0 ) + ( round ( $third [ 'supplier' ]) ? 1 : 0 ) + ( round ( $third [ 'other' ]) ? 1 : 0 ) >= 2 ))
2010-11-17 00:49:25 +01:00
{
2020-09-07 10:18:17 +02:00
print '<tr><td class="center" colspan="2">' ;
$dataseries = array ();
if ( ! empty ( $conf -> societe -> enabled ) && $user -> rights -> societe -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS ) && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS_STATS )) $dataseries [] = array ( $langs -> trans ( " Prospects " ), round ( $third [ 'prospect' ]));
if ( ! empty ( $conf -> societe -> enabled ) && $user -> rights -> societe -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS ) && empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS_STATS )) $dataseries [] = array ( $langs -> trans ( " Customers " ), round ( $third [ 'customer' ]));
if ( ! empty ( $conf -> fournisseur -> enabled ) && $user -> rights -> fournisseur -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_SUPPLIERS_STATS )) $dataseries [] = array ( $langs -> trans ( " Suppliers " ), round ( $third [ 'supplier' ]));
if ( ! empty ( $conf -> societe -> enabled )) $dataseries [] = array ( $langs -> trans ( " Others " ), round ( $third [ 'other' ]));
include_once DOL_DOCUMENT_ROOT . '/core/class/dolgraph.class.php' ;
$dolgraph = new DolGraph ();
2017-11-23 18:47:24 +01:00
$dolgraph -> SetData ( $dataseries );
2020-03-05 17:23:19 +01:00
$dolgraph -> setShowLegend ( 2 );
2017-11-23 18:47:24 +01:00
$dolgraph -> setShowPercent ( 1 );
$dolgraph -> SetType ( array ( 'pie' ));
2020-03-05 02:55:06 +01:00
$dolgraph -> setHeight ( '200' );
2017-11-23 18:47:24 +01:00
$dolgraph -> draw ( 'idgraphthirdparties' );
print $dolgraph -> show ();
2020-09-07 10:18:17 +02:00
print '</td></tr>' . " \n " ;
2020-05-21 15:05:19 +02:00
} else {
2020-09-07 10:18:17 +02:00
if ( ! empty ( $conf -> societe -> enabled ) && $user -> rights -> societe -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS ) && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS_STATS ))
{
$statstring = " <tr> " ;
$statstring .= '<td><a href="' . DOL_URL_ROOT . '/societe/list.php?type=p">' . $langs -> trans ( " Prospects " ) . '</a></td><td class="right">' . round ( $third [ 'prospect' ]) . '</td>' ;
$statstring .= " </tr> " ;
}
if ( ! empty ( $conf -> societe -> enabled ) && $user -> rights -> societe -> lire && empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS ) && empty ( $conf -> global -> SOCIETE_DISABLE_CUSTOMERS_STATS ))
{
$statstring .= " <tr> " ;
$statstring .= '<td><a href="' . DOL_URL_ROOT . '/societe/list.php?type=c">' . $langs -> trans ( " Customers " ) . '</a></td><td class="right">' . round ( $third [ 'customer' ]) . '</td>' ;
$statstring .= " </tr> " ;
}
if (( ! empty ( $conf -> fournisseur -> enabled ) && empty ( $conf -> global -> MAIN_USE_NEW_SUPPLIERMOD ) || ! empty ( $conf -> supplier_order -> enabled ) || ! empty ( $conf -> supplier_invoice -> enabled )) && empty ( $conf -> global -> SOCIETE_DISABLE_SUPPLIERS_STATS ) && $user -> rights -> fournisseur -> lire )
{
$statstring2 = " <tr> " ;
$statstring2 .= '<td><a href="' . DOL_URL_ROOT . '/societe/list.php?type=f">' . $langs -> trans ( " Suppliers " ) . '</a></td><td class="right">' . round ( $third [ 'supplier' ]) . '</td>' ;
$statstring2 .= " </tr> " ;
}
print $statstring ;
print $statstring2 ;
2010-11-17 00:49:25 +01:00
}
2019-02-23 21:18:44 +01:00
print '<tr class="liste_total"><td>' . $langs -> trans ( " UniqueThirdParties " ) . '</td><td class="right">' ;
2010-11-17 00:49:25 +01:00
print $total ;
print '</td></tr>' ;
print '</table>' ;
2018-02-15 12:57:04 +01:00
print '</div>' ;
2010-11-17 00:49:25 +01:00
2019-11-02 01:17:45 +01:00
if ( ! empty ( $conf -> categorie -> enabled ) && ! empty ( $conf -> global -> CATEGORY_GRAPHSTATS_ON_THIRDPARTIES ))
2014-04-20 12:04:42 +02:00
{
require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php' ;
$elementtype = 'societe' ;
2015-07-19 23:39:07 +02:00
2014-04-20 12:04:42 +02:00
print '<br>' ;
2015-07-19 23:39:07 +02:00
2018-02-15 12:57:04 +01:00
print '<div class="div-table-responsive-no-min">' ;
2019-11-05 21:24:41 +01:00
print '<table class="noborder nohover centpercent">' ;
2014-04-20 12:04:42 +02:00
print '<tr class="liste_titre"><th colspan="2">' . $langs -> trans ( " Categories " ) . '</th></tr>' ;
2019-07-20 15:53:46 +02:00
print '<tr><td class="center" colspan="2">' ;
2014-04-20 12:04:42 +02:00
$sql = " SELECT c.label, count(*) as nb " ;
2019-11-02 01:17:45 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " categorie_societe as cs " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " categorie as c ON cs.fk_categorie = c.rowid " ;
$sql .= " WHERE c.type = 2 " ;
if ( ! is_numeric ( $conf -> global -> CATEGORY_GRAPHSTATS_ON_THIRDPARTIES )) $sql .= " AND c.label like ' " . $db -> escape ( $conf -> global -> CATEGORY_GRAPHSTATS_ON_THIRDPARTIES ) . " ' " ;
$sql .= " AND c.entity IN ( " . getEntity ( 'category' ) . " ) " ;
$sql .= " GROUP BY c.label " ;
$total = 0 ;
2014-04-20 12:04:42 +02:00
$result = $db -> query ( $sql );
if ( $result )
{
$num = $db -> num_rows ( $result );
2019-11-02 01:17:45 +01:00
$i = 0 ;
if ( ! empty ( $conf -> use_javascript_ajax ))
2014-04-20 12:04:42 +02:00
{
2019-11-02 01:17:45 +01:00
$dataseries = array ();
$rest = 0 ;
$nbmax = 10 ;
2014-05-04 17:50:31 +02:00
2014-04-20 12:04:42 +02:00
while ( $i < $num )
{
$obj = $db -> fetch_object ( $result );
2014-05-04 17:50:31 +02:00
if ( $i < $nbmax )
2017-11-23 18:47:24 +01:00
{
2019-11-02 01:17:45 +01:00
$dataseries [] = array ( $obj -> label , round ( $obj -> nb ));
2020-05-21 15:05:19 +02:00
} else {
2019-11-02 01:17:45 +01:00
$rest += $obj -> nb ;
2017-11-23 18:47:24 +01:00
}
2019-11-02 01:17:45 +01:00
$total += $obj -> nb ;
2014-04-20 12:04:42 +02:00
$i ++ ;
}
2014-05-04 17:50:31 +02:00
if ( $i > $nbmax )
2017-11-23 18:47:24 +01:00
{
2019-11-02 01:17:45 +01:00
$dataseries [] = array ( $langs -> trans ( " Other " ), round ( $rest ));
2017-11-23 18:47:24 +01:00
}
include_once DOL_DOCUMENT_ROOT . '/core/class/dolgraph.class.php' ;
$dolgraph = new DolGraph ();
$dolgraph -> SetData ( $dataseries );
2020-03-05 17:23:19 +01:00
$dolgraph -> setShowLegend ( 2 );
2017-11-23 18:47:24 +01:00
$dolgraph -> setShowPercent ( 1 );
$dolgraph -> SetType ( array ( 'pie' ));
2020-03-05 17:23:19 +01:00
$dolgraph -> setHeight ( '200' );
2017-11-23 18:47:24 +01:00
$dolgraph -> draw ( 'idgraphcateg' );
print $dolgraph -> show ();
2020-05-21 15:05:19 +02:00
} else {
2014-04-20 12:04:42 +02:00
while ( $i < $num )
{
$obj = $db -> fetch_object ( $result );
2017-11-23 18:47:24 +01:00
2017-04-14 13:02:29 +02:00
print '<tr class="oddeven"><td>' . $obj -> label . '</td><td>' . $obj -> nb . '</td></tr>' ;
2019-11-02 01:17:45 +01:00
$total += $obj -> nb ;
2014-04-20 12:04:42 +02:00
$i ++ ;
}
}
}
print '</td></tr>' ;
2019-02-23 21:18:44 +01:00
print '<tr class="liste_total"><td>' . $langs -> trans ( " Total " ) . '</td><td class="right">' ;
2014-04-20 12:04:42 +02:00
print $total ;
print '</td></tr>' ;
print '</table>' ;
2018-02-15 12:57:04 +01:00
print '</div>' ;
2014-04-20 12:04:42 +02:00
}
2013-03-16 14:53:15 +01:00
2013-03-30 14:27:13 +01:00
print '</div><div class="fichetwothirdright"><div class="ficheaddleft">' ;
2013-03-16 14:53:15 +01:00
2010-11-17 00:49:25 +01:00
/*
2019-11-01 12:52:03 +01:00
* Latest modified third parties
2010-11-17 00:49:25 +01:00
*/
2019-11-02 01:17:45 +01:00
$max = 15 ;
2018-09-12 14:43:05 +02:00
$sql = " SELECT s.rowid, s.nom as name, s.email, s.client, s.fournisseur " ;
2019-11-02 01:17:45 +01:00
$sql .= " , s.code_client " ;
$sql .= " , s.code_fournisseur " ;
2020-02-20 00:18:58 +01:00
$sql .= " , s.code_compta_fournisseur " ;
$sql .= " , s.code_compta " ;
2019-11-02 01:17:45 +01:00
$sql .= " , s.logo " ;
2020-02-20 00:18:58 +01:00
$sql .= " , s.entity " ;
2019-12-08 13:37:50 +01:00
$sql .= " , s.canvas, s.tms as date_modification, s.status as status " ;
2019-11-02 01:17:45 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " societe as s " ;
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " , " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
$sql .= ' WHERE s.entity IN (' . getEntity ( 'societe' ) . ')' ;
if ( ! $user -> rights -> societe -> client -> voir && ! $socid ) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . $user -> id ;
if ( $socid ) $sql .= " AND s.rowid = " . $socid ;
if ( ! $user -> rights -> fournisseur -> lire ) $sql .= " AND (s.fournisseur != 1 OR s.client != 0) " ;
$sql .= $db -> order ( " s.tms " , " DESC " );
$sql .= $db -> plimit ( $max , 0 );
2010-11-17 00:49:25 +01:00
//print $sql;
2011-09-20 15:32:16 +02:00
$result = $db -> query ( $sql );
2010-11-17 00:49:25 +01:00
if ( $result )
{
2020-09-07 10:18:17 +02:00
$num = $db -> num_rows ( $result );
$i = 0 ;
if ( $num > 0 )
{
$transRecordedType = $langs -> trans ( " LastModifiedThirdParties " , $max );
print " \n <!-- last thirdparties modified --> \n " ;
print '<div class="div-table-responsive-no-min">' ;
print '<table class="noborder centpercent">' ;
print '<tr class="liste_titre"><th colspan="2">' . $transRecordedType . '</th>' ;
print '<th> </th>' ;
print '<th class="right"><a href="' . DOL_URL_ROOT . '/societe/list.php?sortfield=s.tms&sortorder=DESC">' . $langs -> trans ( " FullList " ) . '</th>' ;
print '</tr>' . " \n " ;
while ( $i < $num )
{
$objp = $db -> fetch_object ( $result );
$thirdparty_static -> id = $objp -> rowid ;
$thirdparty_static -> name = $objp -> name ;
$thirdparty_static -> client = $objp -> client ;
$thirdparty_static -> fournisseur = $objp -> fournisseur ;
$thirdparty_static -> logo = $objp -> logo ;
$thirdparty_static -> date_modification = $db -> jdate ( $objp -> date_modification );
$thirdparty_static -> status = $objp -> status ;
$thirdparty_static -> code_client = $objp -> code_client ;
$thirdparty_static -> code_fournisseur = $objp -> code_fournisseur ;
$thirdparty_static -> canvas = $objp -> canvas ;
$thirdparty_static -> email = $objp -> email ;
2020-02-17 19:34:09 +01:00
$thirdparty_static -> entity = $objp -> entity ;
2020-09-07 10:18:17 +02:00
$thirdparty_static -> code_compta_fournisseur = $objp -> code_compta_fournisseur ;
$thirdparty_static -> code_compta = $objp -> code_compta ;
print '<tr class="oddeven">' ;
// Name
print '<td class="nowrap tdoverflowmax200">' ;
print $thirdparty_static -> getNomUrl ( 1 );
print " </td> \n " ;
// Type
print '<td class="center">' ;
if ( $thirdparty_static -> client == 1 || $thirdparty_static -> client == 3 )
{
$thirdparty_static -> name = $langs -> trans ( " Customer " );
print $thirdparty_static -> getNomUrl ( 0 , 'customer' , 0 , 1 );
}
if ( $thirdparty_static -> client == 3 && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS )) print " / " ;
if (( $thirdparty_static -> client == 2 || $thirdparty_static -> client == 3 ) && empty ( $conf -> global -> SOCIETE_DISABLE_PROSPECTS ))
{
$thirdparty_static -> name = $langs -> trans ( " Prospect " );
print $thirdparty_static -> getNomUrl ( 0 , 'prospect' , 0 , 1 );
}
if (( ! empty ( $conf -> fournisseur -> enabled ) && empty ( $conf -> global -> MAIN_USE_NEW_SUPPLIERMOD ) || ! empty ( $conf -> supplier_order -> enabled ) || ! empty ( $conf -> supplier_invoice -> enabled )) && $thirdparty_static -> fournisseur )
{
if ( $thirdparty_static -> client ) print " / " ;
$thirdparty_static -> name = $langs -> trans ( " Supplier " );
print $thirdparty_static -> getNomUrl ( 0 , 'supplier' , 0 , 1 );
}
print '</td>' ;
// Last modified date
print '<td class="right">' ;
print dol_print_date ( $thirdparty_static -> date_modification , 'day' );
print " </td> " ;
print '<td class="right nowrap">' ;
print $thirdparty_static -> getLibStatut ( 3 );
print " </td> " ;
print " </tr> \n " ;
$i ++ ;
}
$db -> free ( $result );
print " </table> \n " ;
print '</div>' ;
print " <!-- End last thirdparties modified --> \n " ;
}
2020-05-21 15:05:19 +02:00
} else {
2020-09-07 10:18:17 +02:00
dol_print_error ( $db );
2010-11-17 00:49:25 +01:00
}
2013-03-30 19:40:52 +01:00
print '</div></div></div>' ;
2010-11-17 00:49:25 +01:00
2019-06-18 14:07:52 +02:00
$parameters = array ( 'user' => $user );
$reshook = $hookmanager -> executeHooks ( 'dashboardThirdparties' , $parameters , $object ); // Note that $action and $object may have been modified by hook
2018-08-05 17:21:59 +02:00
// End of page
2012-01-10 17:16:17 +01:00
llxFooter ();
2010-11-17 00:49:25 +01:00
$db -> close ();