2006-12-11 15:41:33 +01:00
< ? PHP
2008-08-25 23:56:04 +02:00
/* Copyright ( C ) 2006 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2007 - 2008 Laurent Destailleur < eldy @ users . sourceforge . net >
2006-12-11 15:41:33 +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
* 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 .
*/
2007-03-24 19:34:11 +01:00
/**
2008-08-25 23:56:04 +02:00
\file scripts / cron / product - graph . php
\ingroup product
\brief Cr<EFBFBD> e les graphiques pour les produits
\version $Id $
*/
2007-03-24 19:34:11 +01:00
// Test si mode CLI
$sapi_type = php_sapi_name ();
2008-08-25 23:56:04 +02:00
$script_file = __FILE__ ;
2007-03-24 19:34:11 +01:00
if ( eregi ( '([^\\\/]+)$' , $script_file , $reg )) $script_file = $reg [ 1 ];
if ( substr ( $sapi_type , 0 , 3 ) == 'cgi' ) {
2008-08-25 23:56:04 +02:00
echo " Erreur: Vous utilisez l'interpreteur PHP pour le mode CGI. Pour executer $script_file en ligne de commande, vous devez utiliser l'interpreteur PHP pour le mode CLI. \n " ;
exit ;
2007-03-24 19:34:11 +01:00
}
2008-08-25 23:56:04 +02:00
2007-03-24 19:34:11 +01:00
// Recupere env dolibarr
$version = '$Revision$' ;
$path = eregi_replace ( $script_file , '' , $_SERVER [ " PHP_SELF " ]);
require_once ( $path . " ../../htdocs/master.inc.php " );
2008-08-25 23:56:04 +02:00
require_once ( DOL_DOCUMENT_ROOT . " /core/dolgraph.class.php " );
2006-12-11 15:41:33 +01:00
2007-03-24 19:34:11 +01:00
$error = 0 ;
2006-12-11 15:41:33 +01:00
$verbose = 0 ;
for ( $i = 1 ; $i < sizeof ( $argv ) ; $i ++ )
{
2008-08-25 23:56:04 +02:00
if ( $argv [ $i ] == " -v " )
{
$verbose = 1 ;
}
if ( $argv [ $i ] == " -vv " )
{
$verbose = 2 ;
}
if ( $argv [ $i ] == " -vvv " )
{
$verbose = 3 ;
}
2006-12-11 15:41:33 +01:00
}
$now = time ();
$year = strftime ( '%Y' , $now );
/*
*
*/
2008-08-25 23:56:04 +02:00
$dir = DOL_DATA_ROOT . " /product/temp " ;
2006-12-11 15:41:33 +01:00
if ( ! is_dir ( $dir ) )
{
2008-08-25 23:56:04 +02:00
if ( ! create_exdir ( $dir , 0755 ))
{
die ( " Can't create $dir\n " );
}
2006-12-11 15:41:33 +01:00
}
/*
*
*/
$sql = " SELECT distinct(fk_product) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " facturedet " ;
$resql = $db -> query ( $sql ) ;
$products = array ();
if ( $resql )
{
2008-08-25 23:56:04 +02:00
while ( $row = $db -> fetch_row ( $resql ))
{
$fdir = $dir . '/' . get_exdir ( $row [ 0 ], 3 );
2006-12-11 15:41:33 +01:00
2008-08-25 23:56:04 +02:00
if ( $verbose ) print $fdir . " \n " ;
create_exdir ( $fdir );
2006-12-11 15:41:33 +01:00
2008-08-25 23:56:04 +02:00
$products [ $row [ 0 ]] = $fdir ;
}
$db -> free ( $resql );
2006-12-11 15:41:33 +01:00
}
else
{
2008-08-25 23:56:04 +02:00
print $sql ;
2006-12-11 15:41:33 +01:00
}
/*
*
*/
foreach ( $products as $id => $fdir )
{
2008-08-25 23:56:04 +02:00
$num = array ();
$ca = array ();
$legends = array ();
for ( $i = 0 ; $i < 12 ; $i ++ )
2006-12-11 15:41:33 +01:00
{
2008-08-25 23:56:04 +02:00
$legends [ $i ] = strftime ( '%b' , mktime ( 1 , 1 , 1 ,( $i + 1 ), 1 , $year ) );
$num [ $i ] = 0 ;
$ca [ $i ] = 0 ;
}
$sql = " SELECT date_format(f.datef,'%b'), sum(fd.qty), sum(fd.total_ht), date_format(f.datef,'%m') " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " facture as f, " . MAIN_DB_PREFIX . " facturedet as fd " ;
$sql .= " WHERE f.rowid = fd.fk_facture AND date_format(f.datef,'%Y')=' " . $year . " ' " ;
$sql .= " AND fd.fk_product =' " . $id . " ' " ;
$sql .= " GROUP BY date_format(f.datef,'%b') " ;
$sql .= " ORDER BY date_format(f.datef,'%m') ASC ; " ;
$resql = $db -> query ( $sql ) ;
if ( $resql )
{
$i = 0 ;
while ( $row = $db -> fetch_row ( $resql ))
{
2006-12-11 15:41:33 +01:00
$legends [( $row [ 3 ] - 1 )] = $row [ 0 ];
$num [( $row [ 3 ] - 1 )] = $row [ 1 ];
2008-08-25 23:56:04 +02:00
$ca [( $row [ 3 ] - 1 )] = $row [ 2 ];
2006-12-11 15:41:33 +01:00
$i ++ ;
2008-08-25 23:56:04 +02:00
}
$db -> free ( $resql );
}
else
{
print $sql ;
}
if ( $i > 0 )
{
$graph = new DolGraph ();
$file = $fdir . " ventes- " . $year . " - " . $id . " .png " ;
$title = " Ventes " ;
$graph -> SetTitle ( $title );
$graph -> BarLineOneYearArtichow ( $file , $ca , $num , $legends );
if ( $verbose )
print " $file\n " ;
2006-12-11 15:41:33 +01:00
}
}
/*
* Ventes annuelles
*
*/
foreach ( $products as $id => $fdir )
{
2008-08-25 23:56:04 +02:00
$num = array ();
$ca = array ();
$legends = array ();
$sql = " SELECT date_format(f.datef,'%Y'), sum(fd.qty), sum(fd.total_ht) " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " facture as f, " . MAIN_DB_PREFIX . " facturedet as fd " ;
$sql .= " WHERE f.rowid = fd.fk_facture " ;
$sql .= " AND fd.fk_product =' " . $id . " ' " ;
$sql .= " GROUP BY date_format(f.datef,'%Y') " ;
$sql .= " ORDER BY date_format(f.datef,'%Y') ASC ; " ;
$resql = $db -> query ( $sql ) ;
if ( $resql )
2006-12-11 15:41:33 +01:00
{
2008-08-25 23:56:04 +02:00
$i = 0 ;
while ( $row = $db -> fetch_row ( $resql ))
{
2006-12-11 15:41:33 +01:00
$legends [ $i ] = $row [ 0 ];
$num [ $i ] = $row [ 1 ];
$ca [ $i ] = $row [ 2 ];
2008-08-25 23:56:04 +02:00
2006-12-11 15:41:33 +01:00
$i ++ ;
2008-08-25 23:56:04 +02:00
}
$db -> free ( $resql );
}
else
{
print $sql ;
}
if ( $i > 0 )
{
$graph = new DolGraph ();
$file = $fdir . " ventes- " . $id . " .png " ;
$title = " Ventes " ;
$graph -> SetTitle ( $title );
$graph -> BarLineAnnualArtichow ( $file , $ca , $num , $legends );
if ( $verbose )
print " $file\n " ;
2006-12-11 15:41:33 +01:00
}
}
?>