Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2011-11-21 13:19:51 +01:00
commit dc8782edde
11 changed files with 226 additions and 277 deletions

View File

@ -154,34 +154,36 @@ if ($conf->use_javascript_ajax)
$SommeD=0; $SommeD=0;
$dataval=array(); $dataval=array();
$datalabels=array(); $datalabels=array();
$i=0;
foreach ($AdherentType as $key => $adhtype) foreach ($AdherentType as $key => $adhtype)
{ {
$datalabels[]=$adhtype->getNomUrl(0,dol_size(16)); $datalabels[]=array($i,$adhtype->getNomUrl(0,dol_size(16)));
$dataval['draft'][]=isset($MemberToValidate[$key])?$MemberToValidate[$key]:0; $dataval['draft'][]=array($i,isset($MemberToValidate[$key])?$MemberToValidate[$key]:0);
$dataval['notuptodate'][]=isset($MembersValidated[$key])?$MembersValidated[$key]-$MemberUpToDate[$key]:0; $dataval['notuptodate'][]=array($i,isset($MembersValidated[$key])?$MembersValidated[$key]-$MemberUpToDate[$key]:0);
$dataval['uptodate'][]=isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0; $dataval['uptodate'][]=array($i,isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0);
$dataval['resiliated'][]=isset($MembersResiliated[$key])?$MembersResiliated[$key]:0; $dataval['resiliated'][]=array($i,isset($MembersResiliated[$key])?$MembersResiliated[$key]:0);
$SommeA+=isset($MemberToValidate[$key])?$MemberToValidate[$key]:0; $SommeA+=isset($MemberToValidate[$key])?$MemberToValidate[$key]:0;
$SommeB+=isset($MembersValidated[$key])?$MembersValidated[$key]-$MemberUpToDate[$key]:0; $SommeB+=isset($MembersValidated[$key])?$MembersValidated[$key]-$MemberUpToDate[$key]:0;
$SommeC+=isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0; $SommeC+=isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0;
$SommeD+=isset($MembersResiliated[$key])?$MembersResiliated[$key]:0; $SommeD+=isset($MembersResiliated[$key])?$MembersResiliated[$key]:0;
$i++;
} }
/* /*
$dataseries=array(); $dataseries=array();
$dataseries[]=array('label'=>$langs->trans("MembersStatusToValid"),'values'=> $dataval['draft']); $dataseries[]=array('label'=>$langs->trans("MembersStatusToValid"),'data'=> $dataval['draft']);
$dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'values'=> $dataval['notuptodate']); $dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'data'=> $dataval['notuptodate']);
$dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'values'=> $dataval['uptodate']); $dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'data'=> $dataval['uptodate']);
$dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'values'=> $dataval['resiliated']); $dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'data'=> $dataval['resiliated']);
$data=array('series'=>$dataseries,'seriestype'=>array('bar','bar','bar','bar'),'xlabel'=>$datalabels); $data=array('series'=>$dataseries,'seriestype'=>array('bar','bar','bar','bar'),'xlabel'=>$datalabels);
dol_print_graph('stats2',300,180,$data,1,'barline'); dol_print_graph('stats2',300,180,$data,1,'barline');
*/ */
$dataseries=array(); $dataseries=array();
$dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'values'=>array(round($SommeB))); $dataseries[]=array('label'=>$langs->trans("MenuMembersNotUpToDate"),'data'=>round($SommeB));
$dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'values'=>array(round($SommeC))); $dataseries[]=array('label'=>$langs->trans("MenuMembersUpToDate"),'data'=>round($SommeC));
$dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'values'=>array(round($SommeD))); $dataseries[]=array('label'=>$langs->trans("MembersStatusResiliated"),'data'=>round($SommeD));
$dataseries[]=array('label'=>$langs->trans("MembersStatusToValid"),'values'=>array(round($SommeA))); $dataseries[]=array('label'=>$langs->trans("MembersStatusToValid"),'data'=>round($SommeA));
$data=array('series'=>$dataseries); $data=array('series'=>$dataseries);
dol_print_graph('stats',300,180,$data,1,'pie',1); dol_print_graph('stats',300,180,$data,1,'pie',1);
print '</td></tr>'; print '</td></tr>';

View File

@ -121,7 +121,7 @@ if ($resql)
$listofstatus=array(0,1,2,3,4); $listofstatus=array(0,1,2,3,4);
foreach ($listofstatus as $status) foreach ($listofstatus as $status)
{ {
$dataseries[]=array('label'=>$propalstatic->LibStatut($status,1),'values'=>array(0=>(isset($vals[$status])?$vals[$status]:0))); $dataseries[]=array('label'=>$propalstatic->LibStatut($status,1),'data'=>(isset($vals[$status])?$vals[$status]:0));
if (! $conf->use_javascript_ajax) if (! $conf->use_javascript_ajax)
{ {
$var=!$var; $var=!$var;

View File

@ -121,7 +121,7 @@ if ($resql)
$bool=false; $bool=false;
foreach ($listofstatus as $status) foreach ($listofstatus as $status)
{ {
$dataseries[]=array('label'=>$commandestatic->LibStatut($status,$bool,1),'values'=>array(0=>(isset($vals[$status.$bool])?$vals[$status.$bool]:0))); $dataseries[]=array('label'=>$commandestatic->LibStatut($status,$bool,1),'data'=>(isset($vals[$status.$bool])?$vals[$status.$bool]:0));
if ($status==3 && $bool==false) $bool=true; if ($status==3 && $bool==false) $bool=true;
else $bool=false; else $bool=false;
} }

View File

@ -105,7 +105,7 @@ print "</tr>\n";
$listoftype=$tripandexpense_static->listOfTypes(); $listoftype=$tripandexpense_static->listOfTypes();
foreach ($listoftype as $code => $label) foreach ($listoftype as $code => $label)
{ {
$dataseries[]=array('label'=>$label,'values'=>array(0=>(isset($nb[$code])?$nb[$code]:0))); $dataseries[]=array('label'=>$label,'data'=>(isset($nb[$code])?$nb[$code]:0));
} }
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)

View File

@ -87,7 +87,7 @@ print "</tr>\n";
$listofstatus=array(0,1,-1,2); $listofstatus=array(0,1,-1,2);
foreach ($listofstatus as $status) foreach ($listofstatus as $status)
{ {
$dataseries[]=array('label'=>$donstatic->LibStatut($status,1),'values'=>array(0=>(isset($nb[$status])?$nb[$status]:0))); $dataseries[]=array('label'=>$donstatic->LibStatut($status,1),'data'=>(isset($nb[$status])?$nb[$status]:0));
} }
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)

View File

@ -3052,20 +3052,21 @@ else
$facturestatic=new Facture($db); $facturestatic=new Facture($db);
$sql = 'SELECT '; if (! $sall) $sql = 'SELECT';
else $sql = 'SELECT DISTINCT';
$sql.= ' f.rowid as facid, f.facnumber, f.type, f.increment, f.total, f.total_ttc,'; $sql.= ' f.rowid as facid, f.facnumber, f.type, f.increment, f.total, f.total_ttc,';
$sql.= ' f.datef as df, f.date_lim_reglement as datelimite,'; $sql.= ' f.datef as df, f.date_lim_reglement as datelimite,';
$sql.= ' f.paye as paye, f.fk_statut,'; $sql.= ' f.paye as paye, f.fk_statut,';
$sql.= ' s.nom, s.rowid as socid'; $sql.= ' s.nom, s.rowid as socid';
if (! $sall) $sql.= ' ,SUM(pf.amount) as am'; // To be able to sort on status if (! $sall) $sql.= ', SUM(pf.amount) as am'; // To be able to sort on status
$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s'; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s';
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= ', '.MAIN_DB_PREFIX.'facture as f'; $sql.= ', '.MAIN_DB_PREFIX.'facture as f';
if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as fd ON fd.fk_facture = f.rowid';
if (! $sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid'; if (! $sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON pf.fk_facture = f.rowid';
else $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'facturedet as fd ON fd.fk_facture = f.rowid';
$sql.= ' WHERE f.fk_soc = s.rowid'; $sql.= ' WHERE f.fk_soc = s.rowid';
$sql.= " AND f.entity = ".$conf->entity; $sql.= " AND f.entity = ".$conf->entity;
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; 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 ($socid) $sql.= ' AND s.rowid = '.$socid;
if ($userid) if ($userid)
{ {
@ -3112,10 +3113,6 @@ else
{ {
$sql.= ' AND f.facnumber LIKE \'%'.$db->escape(trim($search_ref)) . '%\''; $sql.= ' AND f.facnumber LIKE \'%'.$db->escape(trim($search_ref)) . '%\'';
} }
if ($sall)
{
$sql.= ' AND (s.nom LIKE \'%'.$db->escape($sall).'%\' OR f.facnumber LIKE \'%'.$db->escape($sall).'%\' OR f.note LIKE \'%'.$db->escape($sall).'%\' OR fd.description LIKE \'%'.$db->escape($sall).'%\')';
}
if (! $sall) if (! $sall)
{ {
$sql.= ' GROUP BY f.rowid, f.facnumber, f.type, f.increment, f.total, f.total_ttc,'; $sql.= ' GROUP BY f.rowid, f.facnumber, f.type, f.increment, f.total, f.total_ttc,';
@ -3123,6 +3120,10 @@ else
$sql.= ' f.paye, f.fk_statut,'; $sql.= ' f.paye, f.fk_statut,';
$sql.= ' s.nom, s.rowid'; $sql.= ' s.nom, s.rowid';
} }
else
{
$sql.= ' AND (s.nom LIKE \'%'.$db->escape($sall).'%\' OR f.facnumber LIKE \'%'.$db->escape($sall).'%\' OR f.note LIKE \'%'.$db->escape($sall).'%\' OR fd.description LIKE \'%'.$db->escape($sall).'%\')';
}
$sql.= ' ORDER BY '; $sql.= ' ORDER BY ';
$listfield=explode(',',$sortfield); $listfield=explode(',',$sortfield);
foreach ($listfield as $key => $value) $sql.= $listfield[$key].' '.$sortorder.','; foreach ($listfield as $key => $value) $sql.= $listfield[$key].' '.$sortorder.',';

View File

@ -180,7 +180,7 @@ $var=true;
$listofstatus=array(0,4,4,5); $bool=false; $listofstatus=array(0,4,4,5); $bool=false;
foreach($listofstatus as $status) foreach($listofstatus as $status)
{ {
$dataseries[]=array('label'=>$staticcontratligne->LibStatut($status,1,($bool?1:0)),'values'=>array(0=>($nb[$status.$bool]?$nb[$status.$bool]:0))); $dataseries[]=array('label'=>$staticcontratligne->LibStatut($status,1,($bool?1:0)),'data'=>($nb[$status.$bool]?$nb[$status.$bool]:0));
if (! $conf->use_javascript_ajax) if (! $conf->use_javascript_ajax)
{ {
$var=!$var; $var=!$var;

View File

@ -1500,213 +1500,161 @@ function dolibarr_trunc($string,$size=40,$trunc='right',$stringencoding='')
/** /**
* Show a javascript graph * Show a javascript graph
* @param htmlid Html id name *
* @param width Width in pixel * @param string $htmlid Html id name
* @param height Height in pixel * @param int $width Width in pixel
* @param data Data array * @param int $height Height in pixel
* @param showlegend 1 to show legend, 0 otherwise * @param array $data Data array
* @param type Type of graph ('pie', 'barline') * @param int $showlegend 1 to show legend, 0 otherwise
* @param showpercent Show percent (with type='pie' only) * @param string $type Type of graph ('pie', 'barline')
* @param url Param to add an url to click values * @param int $showpercent Show percent (with type='pie' only)
* @param string $url Param to add an url to click values
* @return void
*/ */
function dol_print_graph($htmlid,$width,$height,$data,$showlegend=0,$type='pie',$showpercent=0,$url='') function dol_print_graph($htmlid,$width,$height,$data,$showlegend=0,$type='pie',$showpercent=0,$url='')
{ {
global $conf,$langs; global $conf,$langs;
global $theme_datacolor; // To have var kept when function is called several times global $theme_datacolor; // To have var kept when function is called several times
if (empty($conf->use_javascript_ajax)) return; if (empty($conf->use_javascript_ajax)) return;
$jsgraphlib='flot'; $jsgraphlib='flot';
$datacolor=array(); $datacolor=array();
// Load colors of theme into $datacolor array // Load colors of theme into $datacolor array
$color_file = DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/graph-color.php"; $color_file = DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/graph-color.php";
if (is_readable($color_file)) if (is_readable($color_file))
{ {
include_once($color_file); include_once($color_file);
if (isset($theme_datacolor)) if (isset($theme_datacolor))
{ {
$datacolor=array(); $datacolor=array();
foreach($theme_datacolor as $val) foreach($theme_datacolor as $val)
{ {
$datacolor[]="#".sprintf("%02x",$val[0]).sprintf("%02x",$val[1]).sprintf("%02x",$val[2]); $datacolor[]="#".sprintf("%02x",$val[0]).sprintf("%02x",$val[1]).sprintf("%02x",$val[2]);
} }
} }
} }
print '<div id="'.$htmlid.'" style="width:'.$width.'px;height:'.$height.'px;"></div>'; print '<div id="'.$htmlid.'" style="width:'.$width.'px;height:'.$height.'px;"></div>';
// We use Flot js lib // We use Flot js lib
if ($jsgraphlib == 'flot') if ($jsgraphlib == 'flot')
{ {
if ($type == 'pie') if ($type == 'pie')
{ {
// data is array('series'=>array(serie1,serie2,...), // data is array('series'=>array(serie1,serie2,...),
// 'seriestype'=>array('bar','line',...), // 'seriestype'=>array('bar','line',...),
// 'seriescolor'=>array(0=>'#999999',1=>'#999999',...) // 'seriescolor'=>array(0=>'#999999',1=>'#999999',...)
// 'xlabel'=>array(0=>labelx1,1=>labelx2,...)); // 'xlabel'=>array(0=>labelx1,1=>labelx2,...));
// serieX is array('label'=>'label', values=>array(0=>val)) // serieX is array('label'=>'label', data=>val)
print ' print '
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { $(function () {
var data = ['."\n"; var data = '.json_encode($data['series']).';
$i=0;
foreach($data['series'] as $serie)
{
//print '{ label: "'.($showlegend?$serie['values'][0]:$serie['label'].'<br>'.$serie['values'][0]).'", data: '.$serie['values'][0].' }';
print '{ label: "'.dol_escape_js($serie['label']).'", data: '.$serie['values'][0].' }';
if ($i < count($data['series'])) print ',';
print "\n";
$i++;
}
print '];
function plotWithOptions() { function plotWithOptions() {
jQuery.plot(jQuery("#'.$htmlid.'"), data, $.plot($("#'.$htmlid.'"), data,
{ {
series: { series: {
pie: { pie: {
show: true, show: true,
radius: 3/4, radius: 3/4,
label: { label: {
show: true, show: true,
radius: 3/4, radius: 3/4,
formatter: function(label, series) { formatter: function(label, series) {
var percent=Math.round(series.percent); var percent=Math.round(series.percent);
var number=series.data[0][1]; var number=series.data[0][1];
return \''; return \'';
print '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'; print '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">';
if ($url) print '<a style="color: #FFFFFF;" border="0" href="'.$url.'=">'; if ($url) print '<a style="color: #FFFFFF;" border="0" href="'.$url.'=">';
print '\'+'.($showlegend?'number':'label+\'<br/>\'+number'); print '\'+'.($showlegend?'number':'label+\'<br/>\'+number');
if (! empty($showpercent)) print '+\'<br/>\'+percent+\'%\''; if (! empty($showpercent)) print '+\'<br/>\'+percent+\'%\'';
print '+\''; print '+\'';
if ($url) print '</a>'; if ($url) print '</a>';
print '</div>\'; print '</div>\';
}, },
background: { background: {
opacity: 0.5, opacity: 0.5,
color: \'#000000\' color: \'#000000\'
} }
} }
} }, }
zoom: { },
interactive: true zoom: {
}, interactive: true
pan: { },
interactive: true pan: {
}, interactive: true
'; },';
$i=0; $outputserie=0; if (count($datacolor))
if (count($datacolor)) {
{ print 'colors: '.(! empty($data['seriescolor']) ? json_encode($data['seriescolor']) : json_encode($datacolor)).',';
print 'colors: ['; }
foreach($datacolor as $val) print 'legend: {show: '.($showlegend?'true':'false').', position: \'ne\' }
{ });
if ($outputserie > 0) print ','; }
print '"'.(empty($data['seriescolor'][$i])?$val:$data['seriescolor'][$i]).'"'; plotWithOptions();
$outputserie++; });
$i++; </script>';
} }
print '], '; else if ($type == 'barline')
} {
print 'legend: {show: '.($showlegend?'true':'false').', position: \'ne\' } // data is array('series'=>array(serie1,serie2,...),
}); // 'seriestype'=>array('bar','line',...),
} // 'seriescolor'=>array(0=>'#999999',1=>'#999999',...)
plotWithOptions(); // 'xlabel'=>array(0=>labelx1,1=>labelx2,...));
}); // serieX is array('label'=>'label', data=>array(0=>y1,1=>y2,...)) with same nb of value than into xlabel
</script>'; print '
} <script type="text/javascript">
else if ($type == 'barline') $(function () {
{ var data = [';
// data is array('series'=>array(serie1,serie2,...), $i=0; $outputserie=0;
// 'seriestype'=>array('bar','line',...), foreach($data['series'] as $serie)
// 'seriescolor'=>array(0=>'#999999',1=>'#999999',...) {
// 'xlabel'=>array(0=>labelx1,1=>labelx2,...)); if ($data['seriestype'][$i]=='line') { $i++; continue; };
// serieX is array('label'=>'label', values=>array(0=>y1,1=>y2,...)) with same nb of value than into xlabel if ($outputserie > 0) print ',';
print ' print '{ bars: { stack: 0, show: true, barWidth: 0.9, align: \'center\' }, label: \''.dol_escape_js($serie['label']).'\', data: '.json_encode($serie['data']).'}'."\n";
<script type="text/javascript"> $outputserie++; $i++;
jQuery(function () { }
var data = ['; if ($outputserie) print ', ';
$i=1; $outputserie=0; //print '];
foreach($data['series'] as $serie) //var datalines = [';
{ $i=0; $outputserie=0;
if ($data['seriestype'][$i-1]=='line') { $i++; continue; }; foreach($data['series'] as $serie)
if ($outputserie > 0) print ','; {
print '{ bars: { stack: 0, show: true, barWidth: 0.9, align: \'center\' }, label: \''.dol_escape_js($serie['label']).'\', data: ['; if (empty($data['seriestype'][$i]) || $data['seriestype'][$i]=='bar') { $i++; continue; };
$j=1; if ($outputserie > 0) print ',';
foreach($serie['values'] as $val) print '{ lines: { show: true }, label: \''.dol_escape_js($serie['label']).'\', data: '.json_encode($serie['data']).'}'."\n";
{ $outputserie++; $i++;
print '['.$j.','.$val.']'; }
if ($j < count($serie['values'])) print ', '; print '];
$j++; var dataticks = '.json_encode($data['xlabel']).'
}
print ']}'."\n";
$outputserie++;
$i++;
}
if ($outputserie) print ', ';
//print '];
//var datalines = [';
$i=1; $outputserie=0;
foreach($data['series'] as $serie)
{
if (empty($data['seriestype'][$i-1]) || $data['seriestype'][$i-1]=='bar') { $i++; continue; };
if ($outputserie > 0) print ',';
print '{ lines: { show: true }, label: \''.dol_escape_js($serie['label']).'\', data: [';
$j=1;
foreach($serie['values'] as $val)
{
print '['.$j.','.$val.']';
if ($j < count($serie['values'])) print ', ';
$j++;
}
print ']}'."\n";
$outputserie++;
$i++;
}
print '];
var dataticks = [';
$i=1;
foreach($data['xlabel'] as $label)
{
print '['.$i.',\''.$label.'\']';
if ($i < count($data['xlabel'])) print ',';
$i++;
}
print '];
function plotWithOptions() { function plotWithOptions() {
jQuery.plot(jQuery("#'.$htmlid.'"), data, $.plot(jQuery("#'.$htmlid.'"), data,
{ {
series: { series: {
stack: 0 stack: 0
}, },
zoom: { zoom: {
interactive: true interactive: true
}, },
pan: { pan: {
interactive: true interactive: true
}, },';
'; if (count($datacolor))
if (count($datacolor)) {
{ print 'colors: '.json_encode($datacolor).',';
print 'colors: ['; }
$j=0; print 'legend: {show: '.($showlegend?'true':'false').'},
foreach($datacolor as $val) xaxis: {ticks: dataticks}
{ });
print '"'.$val.'"'; }
if ($j < count($datacolor)) print ','; plotWithOptions();
$j++; });
} </script>';
print '], '; }
} else print 'BadValueForPArameterType';
print 'legend: {show: '.($showlegend?'true':'false').'}, }
xaxis: {ticks: dataticks},
});
}
plotWithOptions();
});
</script>';
}
else print 'BadValueForPArameterType';
}
} }
/** /**

View File

@ -118,7 +118,7 @@ if ($resql)
print "</tr>\n"; print "</tr>\n";
foreach (array(0,1,2,3,4,5,6) as $statut) foreach (array(0,1,2,3,4,5,6) as $statut)
{ {
$dataseries[]=array('label'=>$commandestatic->LibStatut($statut,1),'values'=>array(0=>(isset($vals[$statut])?$vals[$statut]:0))); $dataseries[]=array('label'=>$commandestatic->LibStatut($statut,1),'data'=>(isset($vals[$statut])?$vals[$statut]:0));
if (! $conf->use_javascript_ajax) if (! $conf->use_javascript_ajax)
{ {
$var=!$var; $var=!$var;

View File

@ -1,8 +1,8 @@
<?php <?php
/* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (c) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (c) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2005 Eric Seigne <eric.seigne@ryxeo.com>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -34,18 +34,17 @@ $langs->load("products");
$langs->load("bills"); $langs->load("bills");
$langs->load("other"); $langs->load("other");
$mode=isset($_GET["mode"])?$_GET["mode"]:'byunit'; $id = GETPOST('id');
$error=0; $ref = GETPOST('ref');
$mesg=''; $mode = (GETPOST('mode') ? GETPOST('mode') : 'byunit');
$error = 0;
$mesg = '';
// Security check // Security check
if (isset($_GET["id"]) || isset($_GET["ref"])) $fieldid = (! empty($id) ? $id : $ref);
{ $fieldtype = (! empty($ref) ? 'ref' : 'rowid');
$id = isset($_GET["id"])?$_GET["id"]:(isset($_GET["ref"])?$_GET["ref"]:'');
}
$fieldid = isset($_GET["ref"])?'ref':'rowid';
if ($user->societe_id) $socid=$user->societe_id; if ($user->societe_id) $socid=$user->societe_id;
$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $result=restrictedArea($user,'produit|service',$fieldid,'product','','',$fieldtype);
/* /*
@ -53,19 +52,18 @@ $result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid);
*/ */
$form = new Form($db); $form = new Form($db);
if ($_GET["id"] || $_GET["ref"]) if (! empty($id) || ! empty($ref))
{ {
$product = new Product($db); $object = new Product($db);
if ($_GET["ref"]) $result = $product->fetch('',$_GET["ref"]); $result = $object->fetch($id,$ref);
if ($_GET["id"]) $result = $product->fetch($_GET["id"]);
llxHeader("","",$langs->trans("CardProduct".$product->type)); llxHeader("","",$langs->trans("CardProduct".$object->type));
if ($result) if ($result)
{ {
$head=product_prepare_head($product, $user); $head=product_prepare_head($object, $user);
$titre=$langs->trans("CardProduct".$product->type); $titre=$langs->trans("CardProduct".$object->type);
$picto=($product->type==1?'service':'product'); $picto=($object->type==1?'service':'product');
dol_fiche_head($head, 'stats', $titre, 0, $picto); dol_fiche_head($head, 'stats', $titre, 0, $picto);
@ -74,34 +72,34 @@ if ($_GET["id"] || $_GET["ref"])
// Reference // Reference
print '<tr>'; print '<tr>';
print '<td width="30%">'.$langs->trans("Ref").'</td><td colspan="3">'; print '<td width="30%">'.$langs->trans("Ref").'</td><td colspan="3">';
print $form->showrefnav($product,'ref','',1,'ref'); print $form->showrefnav($object,'ref','',1,'ref');
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
// Label // Label
print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td></tr>'; print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$object->libelle.'</td></tr>';
// Status (to sell) // Status (to sell)
print '<tr><td>'.$langs->trans("Status").' ('.$langs->trans("Sell").')'.'</td><td>'; print '<tr><td>'.$langs->trans("Status").' ('.$langs->trans("Sell").')'.'</td><td>';
print $product->getLibStatut(2,0); print $object->getLibStatut(2,0);
print '</td></tr>'; print '</td></tr>';
// Status (to buy) // Status (to buy)
print '<tr><td>'.$langs->trans("Status").' ('.$langs->trans("Buy").')'.'</td><td>'; print '<tr><td>'.$langs->trans("Status").' ('.$langs->trans("Buy").')'.'</td><td>';
print $product->getLibStatut(2,1); print $object->getLibStatut(2,1);
print '</td></tr>'; print '</td></tr>';
// Graphs additionels generes pas le script product-graph.php // Graphs additionels generes pas le script product-graph.php
$year = strftime('%Y',time()); $year = strftime('%Y',time());
$file = get_exdir($product->id, 3) . "ventes-".$year."-".$product->id.".png"; $file = get_exdir($object->id, 3) . "ventes-".$year."-".$object->id.".png";
if (file_exists (DOL_DATA_ROOT.'/product/temp/'.$file) ) if (file_exists (DOL_DATA_ROOT.'/product/temp/'.$file) )
{ {
print '<tr><td>Ventes</td><td>'; print '<tr><td>Ventes</td><td>';
$url=DOL_URL_ROOT.'/viewimage.php?modulepart=graph_product&amp;file='.$file; $url=DOL_URL_ROOT.'/viewimage.php?modulepart=graph_product&amp;file='.$file;
print '<img src="'.$url.'" alt="Ventes">'; print '<img src="'.$url.'" alt="Ventes">';
$file = get_exdir($product->id, 3) . "ventes-".$product->id.".png"; $file = get_exdir($object->id, 3) . "ventes-".$object->id.".png";
$url=DOL_URL_ROOT.'/viewimage.php?modulepart=graph_product&amp;file='.$file; $url=DOL_URL_ROOT.'/viewimage.php?modulepart=graph_product&amp;file='.$file;
print '<img src="'.$url.'" alt="Ventes">'; print '<img src="'.$url.'" alt="Ventes">';
print '</td></tr>'; print '</td></tr>';
@ -113,12 +111,12 @@ if ($_GET["id"] || $_GET["ref"])
// Choice of stats // Choice of stats
if ($mode == 'bynumber') print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$product->id.'&mode=byunit">'; if ($mode == 'bynumber') print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&mode=byunit">';
else print img_picto('','tick').' '; else print img_picto('','tick').' ';
print $langs->trans("StatsByNumberOfUnits"); print $langs->trans("StatsByNumberOfUnits");
if ($mode == 'bynumber') print '</a>'; if ($mode == 'bynumber') print '</a>';
print ' &nbsp; &nbsp; &nbsp; '; print ' &nbsp; &nbsp; &nbsp; ';
if ($mode == 'byunit') print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$product->id.'&mode=bynumber">'; if ($mode == 'byunit') print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&mode=bynumber">';
else print img_picto('','tick').' '; else print img_picto('','tick').' ';
print $langs->trans("StatsByNumberOfEntities"); print $langs->trans("StatsByNumberOfEntities");
if ($mode == 'byunit') print '</a>'; if ($mode == 'byunit') print '</a>';
@ -131,9 +129,9 @@ if ($_GET["id"] || $_GET["ref"])
$WIDTH=380; $WIDTH=380;
$HEIGHT=160; $HEIGHT=160;
$dir = (!empty($conf->product->dir_temp)?$conf->product->dir_temp:$conf->service->dir_temp); $dir = (!empty($conf->product->dir_temp)?$conf->product->dir_temp:$conf->service->dir_temp);
if (! file_exists($dir.'/'.$product->id)) if (! file_exists($dir.'/'.$object->id))
{ {
if (dol_mkdir($dir.'/'.$product->id) < 0) if (dol_mkdir($dir.'/'.$object->id) < 0)
{ {
$mesg = $langs->trans("ErrorCanNotCreateDir",$dir); $mesg = $langs->trans("ErrorCanNotCreateDir",$dir);
$error++; $error++;
@ -142,20 +140,20 @@ if ($_GET["id"] || $_GET["ref"])
$graphfiles=array( $graphfiles=array(
'propal' =>array('modulepart'=>'productstats_proposals', 'propal' =>array('modulepart'=>'productstats_proposals',
'file' => $product->id.'/propal12m.png', 'file' => $object->id.'/propal12m.png',
'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsProposals"):$langs->trans("NumberOfProposals"))), 'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsProposals"):$langs->trans("NumberOfProposals"))),
'orders' =>array('modulepart'=>'productstats_orders', 'orders' =>array('modulepart'=>'productstats_orders',
'file' => $product->id.'/orders12m.png', 'file' => $object->id.'/orders12m.png',
'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsCustomerOrders"):$langs->trans("NumberOfCustomerOrders"))), 'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsCustomerOrders"):$langs->trans("NumberOfCustomerOrders"))),
'invoices' =>array('modulepart'=>'productstats_invoices', 'invoices' =>array('modulepart'=>'productstats_invoices',
'file' => $product->id.'/invoices12m.png', 'file' => $object->id.'/invoices12m.png',
'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsCustomerInvoices"):$langs->trans("NumberOfCustomerInvoices"))), 'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsCustomerInvoices"):$langs->trans("NumberOfCustomerInvoices"))),
'invoicessuppliers'=>array('modulepart'=>'productstats_invoicessuppliers', 'invoicessuppliers'=>array('modulepart'=>'productstats_invoicessuppliers',
'file' => $product->id.'/invoicessuppliers12m.png', 'file' => $object->id.'/invoicessuppliers12m.png',
'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsSupplierInvoices"):$langs->trans("NumberOfSupplierInvoices"))), 'label' => ($mode=='byunit'?$langs->trans("NumberOfUnitsSupplierInvoices"):$langs->trans("NumberOfSupplierInvoices"))),
// 'orderssuppliers' =>array('modulepart'=>'productstats_orderssuppliers', 'file' => $product->id.'/orderssuppliers12m.png', 'label' => $langs->trans("Nombre commande fournisseurs sur les 12 derniers mois")), // 'orderssuppliers' =>array('modulepart'=>'productstats_orderssuppliers', 'file' => $object->id.'/orderssuppliers12m.png', 'label' => $langs->trans("Nombre commande fournisseurs sur les 12 derniers mois")),
// 'contracts' =>array('modulepart'=>'productstats_contracts', 'file' => $product->id.'/contracts12m.png', 'label' => $langs->trans("Nombre contrats sur les 12 derniers mois")), // 'contracts' =>array('modulepart'=>'productstats_contracts', 'file' => $object->id.'/contracts12m.png', 'label' => $langs->trans("Nombre contrats sur les 12 derniers mois")),
); );
@ -173,10 +171,10 @@ if ($_GET["id"] || $_GET["ref"])
$graph_data = array(); $graph_data = array();
// TODO Test si deja existant et recent, on ne genere pas // TODO Test si deja existant et recent, on ne genere pas
if ($key == 'propal') $graph_data = $product->get_nb_propal($socid,$mode); if ($key == 'propal') $graph_data = $object->get_nb_propal($socid,$mode);
if ($key == 'orders') $graph_data = $product->get_nb_order($socid,$mode); if ($key == 'orders') $graph_data = $object->get_nb_order($socid,$mode);
if ($key == 'invoices') $graph_data = $product->get_nb_vente($socid,$mode); if ($key == 'invoices') $graph_data = $object->get_nb_vente($socid,$mode);
if ($key == 'invoicessuppliers') $graph_data = $product->get_nb_achat($socid,$mode); if ($key == 'invoicessuppliers') $graph_data = $object->get_nb_achat($socid,$mode);
if (is_array($graph_data)) if (is_array($graph_data))
{ {
$px->SetData($graph_data); $px->SetData($graph_data);
@ -193,7 +191,7 @@ if ($_GET["id"] || $_GET["ref"])
} }
else else
{ {
dol_print_error($db,'Error for calculating graph on key='.$key.' - '.$product->error); dol_print_error($db,'Error for calculating graph on key='.$key.' - '.$object->error);
} }
} }
} }
@ -240,7 +238,7 @@ if ($_GET["id"] || $_GET["ref"])
{ {
print '<td>'.($mesg?'<font class="error">'.$mesg.'</font>':$langs->trans("ChartNotGenerated")).'</td>'; print '<td>'.($mesg?'<font class="error">'.$mesg.'</font>':$langs->trans("ChartNotGenerated")).'</td>';
} }
print '<td align="center"><a href="fiche.php?id='.$product->id.'&amp;action=recalcul&amp;mode='.$mode.'">'.img_picto($langs->trans("ReCalculate"),'refresh').'</a></td>'; print '<td align="center"><a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=recalcul&amp;mode='.$mode.'">'.img_picto($langs->trans("ReCalculate"),'refresh').'</a></td>';
print '</tr>'; print '</tr>';
print '</table>'; print '</table>';

View File

@ -108,9 +108,9 @@ if ($conf->use_javascript_ajax && ((round($third['prospect'])?1:0)+(round($third
{ {
print '<tr><td align="center">'; print '<tr><td align="center">';
$dataseries=array(); $dataseries=array();
if ($conf->societe->enabled && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS)) $dataseries[]=array('label'=>$langs->trans("Prospects"),'values'=>array(round($third['prospect']))); if ($conf->societe->enabled && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS)) $dataseries[]=array('label'=>$langs->trans("Prospects"),'data'=>round($third['prospect']));
if ($conf->societe->enabled && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS)) $dataseries[]=array('label'=>$langs->trans("Customers"),'values'=>array(round($third['customer']))); if ($conf->societe->enabled && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS)) $dataseries[]=array('label'=>$langs->trans("Customers"),'data'=>round($third['customer']));
if ($conf->fournisseur->enabled && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS)) $dataseries[]=array('label'=>$langs->trans("Suppliers"),'values'=>array(round($third['supplier']))); if ($conf->fournisseur->enabled && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS)) $dataseries[]=array('label'=>$langs->trans("Suppliers"),'data'=>round($third['supplier']));
$data=array('series'=>$dataseries); $data=array('series'=>$dataseries);
dol_print_graph('stats',300,180,$data,1,'pie',0); dol_print_graph('stats',300,180,$data,1,'pie',0);
print '</td></tr>'; print '</td></tr>';