Add php files
This commit is contained in:
943
modules/EcmCharts/helperChart.php
Executable file
943
modules/EcmCharts/helperChart.php
Executable file
@@ -0,0 +1,943 @@
|
||||
<?php
|
||||
function generateImgChartCategories($year,$account,$sh){
|
||||
|
||||
$temp=0;
|
||||
$s=getSalesByCategory("",$year."-01-01",$year."-12-31","",$account);
|
||||
$s_b=getSalesByCategory("",($year-1)."-01-01",($year-1)."-12-31","",$account);
|
||||
$temp=0;
|
||||
|
||||
$w=mysql_query("select id,name from ecmproductcategories where deleted='0' and name!=''");
|
||||
//$s=sum($year,$r['id']);
|
||||
while($r=mysql_fetch_array($w)){
|
||||
//if(in_array("sales",$sh)){
|
||||
$v_sales_b=$s_b[$r['id']]['sales'];
|
||||
if($v_sales_b>$temp)$temp=$v_sales_b;
|
||||
$sum_sales_b+=$v_sales_b;
|
||||
|
||||
$v_sales=$s[$r['id']]['sales'];
|
||||
if($v_sales>$temp)$temp=$v_sales;
|
||||
$sum_sales+=$v_sales;
|
||||
//}
|
||||
//if(in_array("quantity",$sh)){
|
||||
$v_quantity_b=$s_b[$r['id']]['quantity'];
|
||||
if($v_quantity_b>$temp)$temp=$v_b_quantity;
|
||||
$sum_quantity_b+=$v_quantity_b;
|
||||
|
||||
$v_quantity=$s[$r['id']]['quantity'];
|
||||
if($v_quantity>$temp)$temp=$v_quantity;
|
||||
$sum_quantity+=$v_quantity;
|
||||
//}
|
||||
//if(in_array("margin",$sh)){
|
||||
if($s_b[$r['id']]['sales']>0)$v_margin_b=100*($s_b[$r['id']]['purchase'])/$s_b[$r['id']]['sales'];
|
||||
else $v_margin_b=0;
|
||||
if($v_margin_b>$temp)$temp=$v_margin_b;
|
||||
$sum_margin_b+=$v_margin_b;
|
||||
|
||||
if($s[$r['id']]['sales']>0)$v_margin=100*($s[$r['id']]['purchase'])/$s[$r['id']]['sales'];
|
||||
else $v_margin=0;
|
||||
if($v_margin>$temp)$temp=$v_margin;
|
||||
$sum_margin+=$v_margin;
|
||||
//}
|
||||
//if(in_array("pln_margin",$sh)){
|
||||
$v_pln_margin_b=$s_b[$r['id']]['sales']-$s_b[$r['id']]['purchase'];
|
||||
if($v_pln_margin_b>$temp)$temp=$v_pln_margin_b;
|
||||
$sum_pln_margin_b+=$v_pln_margin_b;
|
||||
|
||||
$v_pln_margin=$s[$r['id']]['sales']-$s[$r['id']]['purchase'];
|
||||
if($v_pln_margin>$temp)$temp=$v_pln_margin;
|
||||
$sum_pln_margin+=$v_pln_margin;
|
||||
//}
|
||||
$arr[]=array(
|
||||
"name"=>repl($r['name']),
|
||||
|
||||
"value_sales_b"=>$v_sales_b,
|
||||
"value_pln_margin_b"=>$v_pln_margin_b,
|
||||
"value_quantity_b"=>$v_quantity_b,
|
||||
"value_margin_b"=>$v_margin_b,
|
||||
|
||||
"value_sales"=>$v_sales,
|
||||
"value_pln_margin"=>$v_pln_margin,
|
||||
"value_quantity"=>$v_quantity,
|
||||
"value_margin"=>$v_margin,
|
||||
);
|
||||
}
|
||||
$arr=multisort($arr,array(array('key'=>'value_sales','sort'=>'desc')));
|
||||
foreach($arr as $a){
|
||||
$data_sales_b[]=$a['value_sales_b'];
|
||||
$data_quantity_b[]=$a['value_quantity_b'];
|
||||
$data_pln_margin_b[]=$a['value_pln_margin_b'];
|
||||
$data_margin_b[]=$a['value_margin_b'];
|
||||
|
||||
$data_sales[]=$a['value_sales'];
|
||||
$data_quantity[]=$a['value_quantity'];
|
||||
$data_pln_margin[]=$a['value_pln_margin'];
|
||||
$data_margin[]=$a['value_margin'];
|
||||
|
||||
$cats[]=$a['name'];
|
||||
}
|
||||
|
||||
if($account){
|
||||
$r=mysql_fetch_array(mysql_query("select name from accounts where id='".$account."'"));
|
||||
$acc_name=" - ".$r['name'];
|
||||
}
|
||||
$title="Categories".$acc_name;
|
||||
|
||||
$data_sales[]=0;
|
||||
$data_sales_b[]=0;
|
||||
$data_quantity[]=0;
|
||||
$data_quantity_b[]=0;
|
||||
$data_pln_margin[]=0;
|
||||
$data_pln_margin_b[]=0;
|
||||
$data_margin[]=0;
|
||||
$data_margin_b[]=0;
|
||||
|
||||
$DataSet = new pData;
|
||||
if(in_array("sales",$sh))$DataSet->AddPoint($data_sales_b,"SalesB");
|
||||
if(in_array("sales",$sh))$DataSet->AddPoint($data_sales,"SalesN");
|
||||
if(in_array("quantity",$sh))$DataSet->AddPoint($data_quantity_b,"QuantityB");
|
||||
if(in_array("quantity",$sh))$DataSet->AddPoint($data_quantity,"QuantityN");
|
||||
if(in_array("pln_margin",$sh))$DataSet->AddPoint($data_pln_margin_b,"PLN_MarginB");
|
||||
if(in_array("pln_margin",$sh))$DataSet->AddPoint($data_pln_margin,"PLN_MarginN");
|
||||
if(in_array("margin",$sh))$DataSet->AddPoint($data_margin_b,"MarginB");
|
||||
if(in_array("margin",$sh))$DataSet->AddPoint($data_margin,"MarginN");
|
||||
$cats[]=" ";
|
||||
$DataSet->AddPoint($cats,"Categories");
|
||||
$DataSet->AddAllSeries();
|
||||
$DataSet->SetAbsciseLabelSerie("Categories");
|
||||
|
||||
if(in_array("sales",$sh)){
|
||||
$DataSet->SetSerieName("Sales ".($year-1)." - ".number_format($sum_sales_b,2,",","."),"SalesB");
|
||||
$DataSet->SetSerieName("Sales ".($year)." - ".number_format($sum_sales,2,",","."),"SalesN");
|
||||
}
|
||||
if(in_array("quantity",$sh)){
|
||||
$DataSet->SetSerieName("Quantity ".($year-1)." - ".number_format($sum_quantity_b,2,",","."),"QuantityB");
|
||||
$DataSet->SetSerieName("Quantity ".($year)." - ".number_format($sum_quantity,2,",","."),"QuantityN");
|
||||
}
|
||||
if(in_array("pln_margin",$sh)){
|
||||
$DataSet->SetSerieName("PLN Margin ".($year-1)." - ".number_format($sum_pln_margin_b,2,",","."),"PLN_MarginB");
|
||||
$DataSet->SetSerieName("PLN Margin ".($year)." - ".number_format($sum_pln_margin,2,",","."),"PLN_MarginN");
|
||||
}
|
||||
if(in_array("margin",$sh)){
|
||||
$margb=100*$sum_pln_margin_b/$sum_sales_b;
|
||||
$margn=100*$sum_pln_margin/$sum_sales;
|
||||
$DataSet->SetSerieName("Margin ".($year-1)." - ".round($margb,2)."%","MarginB");
|
||||
$DataSet->SetSerieName("Margin ".($year)." - ".round($margn,2)."%","MarginN");
|
||||
}
|
||||
|
||||
// Initialise the graph
|
||||
$Test = new pChart(1900,900);
|
||||
|
||||
$colors="";
|
||||
if(in_array("sales",$sh)){
|
||||
$colors.="0,204,0
|
||||
0,102,0
|
||||
";
|
||||
}
|
||||
if(in_array("quantity",$sh)){
|
||||
$colors.="153,153,153
|
||||
0,0,0
|
||||
";
|
||||
}
|
||||
if(in_array("pln_margin",$sh)){
|
||||
$colors.="51,52,173
|
||||
0,0,204
|
||||
";
|
||||
}
|
||||
if(in_array("margin",$sh)){
|
||||
$colors.="213,76,120
|
||||
136,32,66
|
||||
";
|
||||
}
|
||||
file_put_contents('modules/EcmCharts/palette.txt',$colors);
|
||||
|
||||
|
||||
$Test->loadColorPalette('modules/EcmCharts/palette.txt');
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",14);
|
||||
$Test->setGraphArea(120,30,1600,750);
|
||||
$Test->drawFilledRoundedRectangle(7,7,1900,880,5,240,240,240);
|
||||
$Test->drawGraphArea(255,255,255,TRUE);
|
||||
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,30,2,TRUE);
|
||||
$Test->drawGrid(4,TRUE,230,230,230,50);
|
||||
|
||||
// Draw the 0 line
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",6);
|
||||
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
|
||||
|
||||
// Draw the bar graph
|
||||
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
|
||||
/*
|
||||
$DataSet->RemoveSerie("SalesB");
|
||||
$DataSet->RemoveSerie("SalesN");
|
||||
$DataSet->RemoveSerie("QuantityB");
|
||||
$DataSet->RemoveSerie("QuantityN");
|
||||
$DataSet->RemoveSerie("PLN_MarginB");
|
||||
$DataSet->RemoveSerie("PLN_MarginN");
|
||||
$DataSet->RemoveSerie("Months");
|
||||
$DataSet->AddSerie("MarginB");
|
||||
$DataSet->AddSerie("MarginN");
|
||||
$DataSet->SetYAxisName("Margin");
|
||||
$Test->drawRightScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,0);
|
||||
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
|
||||
*/
|
||||
// Finish the graph
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",16);
|
||||
$Test->drawLegend(1600,37,$DataSet->GetDataDescription(),255,255,255);
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",20);
|
||||
$Test->drawTitle(50,22,$title,50,50,50,1900);
|
||||
$ar[]=$guid=create_guid();
|
||||
$Test->Render("modules/EcmCharts/files/".$guid.".png");
|
||||
return $guid;
|
||||
}
|
||||
function repl($t){
|
||||
$a1=array("a","s","e","z","z","c","n","ó","l","A","S","E","Z","Z","C","N","Ó","L");
|
||||
$a2=array("a","s","e","z","z","c","n","o","l","A","S","E","Z","Z","C","N","O","L");
|
||||
return str_replace($a1,$a2,$t);
|
||||
}
|
||||
function multisort($data,$keys){
|
||||
if(count($data)>0){
|
||||
foreach($data as $key => $row)
|
||||
{
|
||||
foreach($keys as $k)
|
||||
{
|
||||
$cols[$k['key']][$key] = $row[$k['key']];
|
||||
}
|
||||
}
|
||||
|
||||
$idkeys=@array_keys($data);
|
||||
$i=0;
|
||||
foreach($keys as $k)
|
||||
{
|
||||
if($i>0)$sort.=',';
|
||||
$sort.='$cols['.$k['key'].']';
|
||||
if($k['sort'])$sort.=',SORT_'.strtoupper($k['sort']);
|
||||
if($k['type'])$sort.=',SORT_'.strtoupper($k['type']);
|
||||
$i++;
|
||||
}
|
||||
$sort.=',$idkeys';
|
||||
$sort='@array_multisort('.$sort.');';
|
||||
eval($sort);
|
||||
foreach($idkeys as $idkey)
|
||||
{
|
||||
$result[$idkey]=$data[$idkey];
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
function getSalesByCategory($category_id,$date_from,$date_to,$product_active,$account_id){
|
||||
$wh=array();
|
||||
$wh[]="e.deleted='0'";
|
||||
$wh[]="i.deleted='0'";
|
||||
if($category_id)$wh[]="p.product_category_id='".$category_id."'";
|
||||
$wh[]="(w.deleted is null or w.deleted='0')";
|
||||
$wh[]="(p.deleted is null or p.deleted='0')";
|
||||
$wh[]="(ci.deleted is null or ci.deleted='0')";
|
||||
//$wh[]="e.status='accepted'";
|
||||
if($date_from)$wh[]="e.register_date>='".$date_from."'";
|
||||
if($date_to)$wh[]="e.register_date<='".$date_to."'";
|
||||
if($account_id)$wh[]="(e.parent_id='".$account_id."' or w.parent_id='".$account_id."')";
|
||||
$q="select
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
CASE WHEN e.currency_value is null or e.currency_value=''
|
||||
THEN
|
||||
i.price*i.quantity
|
||||
ELSE
|
||||
i.price*i.quantity*e.currency_value
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN ci.price is null or ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
i.price*i.quantity-ci.price*ci.quantity
|
||||
END
|
||||
END
|
||||
) as sales,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
i.purchase_price*i.quantity
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
ci.purchase_price*i.quantity-ci.purchase_price*ci.quantity
|
||||
END
|
||||
END
|
||||
) as purchase,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
i.quantity
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
i.quantity-ci.quantity
|
||||
END
|
||||
END
|
||||
) as quantity,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct' THEN
|
||||
CASE WHEN p.pieces_per_carton>0 and p.pieces_per_carton is not null THEN
|
||||
i.quantity*p.carton_volume_meter/p.pieces_per_carton
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null THEN
|
||||
0
|
||||
ELSE
|
||||
CASE WHEN p.pieces_per_carton>0 and p.pieces_per_carton is not null THEN
|
||||
(i.quantity-ci.quantity)*p.carton_volume_meter/p.pieces_per_carton
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
END
|
||||
END
|
||||
) as cbm,
|
||||
p.product_category_id
|
||||
from ecminvoiceoutitems as i
|
||||
left join ecminvoiceoutitems as ci on i.ecminvoiceoutitem_id=ci.id
|
||||
inner join ecminvoiceouts as e on e.id=i.ecminvoiceout_id
|
||||
left join ecmstockdocouts as w on e.wz_id=w.id
|
||||
left join ecmproducts as p on p.id=i.ecmproduct_id
|
||||
where
|
||||
".implode(" and ",$wh)."
|
||||
group by p.product_category_id";
|
||||
$query=mysql_query($q);
|
||||
echo mysql_error();
|
||||
while($row=mysql_fetch_array($query)){
|
||||
$data[$row['product_category_id']]=$row;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function getSalesByProduct1($category_id,$date_from,$date_to,$product_active,$account_id){
|
||||
$wh=array();
|
||||
$wh[]="e.deleted='0'";
|
||||
$wh[]="i.deleted='0'";
|
||||
if($category_id)$wh[]="p.product_category_id='".$category_id."'";
|
||||
$wh[]="(w.deleted is null or w.deleted='0')";
|
||||
$wh[]="(p.deleted is null or p.deleted='0')";
|
||||
$wh[]="(ci.deleted is null or ci.deleted='0')";
|
||||
//$wh[]="e.status='accepted'";
|
||||
if($date_from)$wh[]="e.register_date>='".$date_from."'";
|
||||
if($date_to)$wh[]="e.register_date<='".$date_to."'";
|
||||
if($account_id)$wh[]="(e.parent_id='".$account_id."' or w.parent_id='".$account_id."')";
|
||||
$q="select
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
CASE WHEN e.currency_value is null or e.currency_value=''
|
||||
THEN
|
||||
i.price*i.quantity
|
||||
ELSE
|
||||
i.price*i.quantity*e.currency_value
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN ci.price is null or ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
i.price*i.quantity-ci.price*ci.quantity
|
||||
END
|
||||
END
|
||||
) as sales,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
i.purchase_price*i.quantity
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
ci.purchase_price*i.quantity-ci.purchase_price*ci.quantity
|
||||
END
|
||||
END
|
||||
) as purchase,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
i.quantity
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
i.quantity-ci.quantity
|
||||
END
|
||||
END
|
||||
) as quantity,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct' THEN
|
||||
CASE WHEN p.pieces_per_carton>0 and p.pieces_per_carton is not null THEN
|
||||
i.quantity*p.carton_volume_meter/p.pieces_per_carton
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null THEN
|
||||
0
|
||||
ELSE
|
||||
CASE WHEN p.pieces_per_carton>0 and p.pieces_per_carton is not null THEN
|
||||
(i.quantity-ci.quantity)*p.carton_volume_meter/p.pieces_per_carton
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
END
|
||||
END
|
||||
) as cbm,
|
||||
p.id
|
||||
from ecminvoiceoutitems as i
|
||||
left join ecminvoiceoutitems as ci on i.ecminvoiceoutitem_id=ci.id
|
||||
inner join ecminvoiceouts as e on e.id=i.ecminvoiceout_id
|
||||
left join ecmstockdocouts as w on e.wz_id=w.id
|
||||
left join ecmproducts as p on p.id=i.ecmproduct_id
|
||||
where
|
||||
".implode(" and ",$wh)."
|
||||
group by p.id";
|
||||
$query=mysql_query($q);
|
||||
echo mysql_error();
|
||||
while($row=mysql_fetch_array($query)){
|
||||
$data[$row['id']]=$row;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function getSalesByProduct($category_id,$date_from,$date_to,$product_active,$account_id){
|
||||
$wh=array();
|
||||
$wh[]="e.deleted='0'";
|
||||
$wh[]="i.deleted='0'";
|
||||
if($category_id)$wh[]="p.product_category_id='".$category_id."'";
|
||||
$wh[]="(w.deleted is null or w.deleted='0')";
|
||||
$wh[]="(p.deleted is null or p.deleted='0')";
|
||||
$wh[]="(ci.deleted is null or ci.deleted='0')";
|
||||
//$wh[]="e.status='accepted'";
|
||||
if($date_from)$wh[]="e.register_date>='".$date_from."'";
|
||||
if($date_to)$wh[]="e.register_date<='".$date_to."'";
|
||||
if($account_id)$wh[]="(e.parent_id='".$account_id."' or w.parent_id='".$account_id."')";
|
||||
$q="select
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
CASE WHEN e.currency_value is null or e.currency_value=''
|
||||
THEN
|
||||
i.price*i.quantity
|
||||
ELSE
|
||||
i.price*i.quantity*e.currency_value
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN ci.price is null or ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
i.price*i.quantity-ci.price*ci.quantity
|
||||
END
|
||||
END
|
||||
) as sales,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
i.purchase_price*i.quantity
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
ci.purchase_price*i.quantity-ci.purchase_price*ci.quantity
|
||||
END
|
||||
END
|
||||
) as purchase,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct'
|
||||
THEN
|
||||
i.quantity
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null
|
||||
THEN
|
||||
0
|
||||
ELSE
|
||||
i.quantity-ci.quantity
|
||||
END
|
||||
END
|
||||
) as quantity,
|
||||
sum(
|
||||
CASE WHEN e.type!='correct' THEN
|
||||
CASE WHEN p.pieces_per_carton>0 and p.pieces_per_carton is not null THEN
|
||||
i.quantity*p.carton_volume_meter/p.pieces_per_carton
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN ci.quantity is null THEN
|
||||
0
|
||||
ELSE
|
||||
CASE WHEN p.pieces_per_carton>0 and p.pieces_per_carton is not null THEN
|
||||
(i.quantity-ci.quantity)*p.carton_volume_meter/p.pieces_per_carton
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
END
|
||||
END
|
||||
) as cbm,
|
||||
month(e.register_date) as month
|
||||
from ecminvoiceoutitems as i
|
||||
left join ecminvoiceoutitems as ci on i.ecminvoiceoutitem_id=ci.id
|
||||
inner join ecminvoiceouts as e on e.id=i.ecminvoiceout_id
|
||||
left join ecmstockdocouts as w on e.wz_id=w.id
|
||||
left join ecmproducts as p on p.id=i.ecmproduct_id
|
||||
where
|
||||
".implode(" and ",$wh)."
|
||||
group by month(e.register_date)";
|
||||
$query=mysql_query($q);
|
||||
echo mysql_error();
|
||||
while($row=mysql_fetch_array($query)){
|
||||
$data[$row['month']]=$row;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function generateImgChartProducts($cat,$year,$account,$sh){
|
||||
if($cat=="cat")$cat="";
|
||||
$temp=0;
|
||||
$months=array("January","February","March","April","May","June","July","August","September","October","November","Dezember");
|
||||
$s=getSalesByProduct1($cat,$year."-01-01",$year."-12-31","",$account);
|
||||
$sb=getSalesByProduct1($cat,($year-1)."-01-01",($year-1)."-12-31","",$account);
|
||||
$arr=array();
|
||||
if($cat)$wh=" and product_category_id='".$cat."'";
|
||||
else $wh="";
|
||||
$w=mysql_query("select id,code,name from ecmproducts where deleted='0'".$wh);
|
||||
while($r=mysql_fetch_array($w)){
|
||||
//if(in_array("sales",$sh)){
|
||||
if($s[$r['id']]['sales']>$temp)$temp=$s[$r['id']]['sales'];
|
||||
if(!$s[$r['id']]['sales'])$value1=0;
|
||||
else $value1=$s[$r['id']]['sales'];
|
||||
$sum1+=$value1;
|
||||
|
||||
if($sb[$r['id']]['sales']>$temp)$temp=$sb[$r['id']]['sales'];
|
||||
if(!$sb[$r['id']]['sales'])$value1b=0;
|
||||
else $value1b=$sb[$r['id']]['sales'];
|
||||
$sum1b+=$value1b;
|
||||
//}
|
||||
if(in_array("quantity",$sh)){
|
||||
if($s[$r['id']]['quantity']>$temp)$temp=$s[$r['id']]['quantity'];
|
||||
if(!$s[$r['id']]['quantity'])$value2=0;
|
||||
else $value2=$s[$r['id']]['quantity'];
|
||||
$sum2+=$value2;
|
||||
|
||||
if($sb[$r['id']]['quantity']>$temp)$temp=$sb[$r['id']]['quantity'];
|
||||
if(!$sb[$r['id']]['quantity'])$value2b=0;
|
||||
else $value2b=$sb[$r['id']]['quantity'];
|
||||
$sum2b+=$value2b;
|
||||
}
|
||||
//if(in_array("pln_margin",$sh)){
|
||||
$pln_margin=$s[$r['id']]['sales']-$s[$r['id']]['purchase'];
|
||||
if($pln_margin>$temp)$temp=$pln_margin;
|
||||
if(!$pln_margin)$value3=0;
|
||||
$value3=$pln_margin;
|
||||
$sum3+=$value3;
|
||||
|
||||
$pln_margin=$sb[$r['id']]['sales']-$sb[$r['id']]['purchase'];
|
||||
if($pln_margin>$temp)$temp=$pln_margin;
|
||||
if(!$pln_margin)$value3b=0;
|
||||
$value3b=$pln_margin;
|
||||
$sum3b+=$value3b;
|
||||
//}
|
||||
if(in_array("margin",$sh)){
|
||||
$mar++;
|
||||
if($s[$r['id']]['sales']>0)$margin=100*($s[$r['id']]['sales']-$s[$r['id']]['purchase'])/$s[$r['id']]['sales'];
|
||||
else $margin=0;
|
||||
if($margin>$temp_margin)$temp_margin=$margin;
|
||||
if(!$margin)$value4=0;
|
||||
$value4=$margin;
|
||||
$sum4+=$value4;
|
||||
|
||||
$marb++;
|
||||
if($sb[$r['id']]['sales']>0)$margin=100*($sb[$r['id']]['sales']-$sb[$r['id']]['purchase'])/$sb[$r['id']]['sales'];
|
||||
else $margin=0;
|
||||
if($margin>$temp_margin)$temp_margin=$margin;
|
||||
if(!$margin)$value4b=0;
|
||||
$value4b=$margin;
|
||||
$sum4b+=$value4b;
|
||||
}
|
||||
$arr[]=array(
|
||||
"name"=>$r['code'],
|
||||
"name1"=>$r['name'],
|
||||
|
||||
"value1"=>$value1,
|
||||
"value2"=>$value2,
|
||||
"value3"=>$value3,
|
||||
"value4"=>$value4,
|
||||
|
||||
"value1b"=>$value1b,
|
||||
"value2b"=>$value2b,
|
||||
"value3b"=>$value3b,
|
||||
"value4b"=>$value4b,
|
||||
);
|
||||
}
|
||||
if(!in_array("sales",$sh))$sortby="value1";
|
||||
else $sortby="value1";
|
||||
$arr=multisort($arr,array(array('key'=>$sortby,'sort'=>'desc')));
|
||||
foreach($arr as $a){
|
||||
$cm++;
|
||||
$data1n[]=$a['value1'];
|
||||
$data2n[]=$a['value2'];
|
||||
$data3n[]=$a['value3'];
|
||||
$data4n[]=$a['value4'];
|
||||
|
||||
$data1b[]=$a['value1b'];
|
||||
$data2b[]=$a['value2b'];
|
||||
$data3b[]=$a['value3b'];
|
||||
$data4b[]=$a['value4b'];
|
||||
|
||||
$products[]=repl($a['name']);
|
||||
$names[]=repl($a['name1']);
|
||||
if($cm==20)break;
|
||||
}
|
||||
|
||||
if($account){
|
||||
$r=mysql_fetch_array(mysql_query("select name from accounts where id='".$account."'"));
|
||||
$acc_name=" - ".$r['name'];
|
||||
}
|
||||
if($cat){
|
||||
$r=mysql_fetch_array(mysql_query("select name from ecmproductcategories where id='".$cat."'"));
|
||||
$cat_name=" - ".$r['name'];
|
||||
}
|
||||
$title="Sales".$acc_name.$cat_name;
|
||||
|
||||
$data1n[]=0;
|
||||
$data1b[]=0;
|
||||
$data2n[]=0;
|
||||
$data2b[]=0;
|
||||
$data3n[]=0;
|
||||
$data3b[]=0;
|
||||
$data4n[]=0;
|
||||
$data4b[]=0;
|
||||
|
||||
$DataSet = new pData;
|
||||
if(in_array("sales",$sh))$DataSet->AddPoint($data1b,"SalesB");
|
||||
if(in_array("sales",$sh))$DataSet->AddPoint($data1n,"SalesN");
|
||||
if(in_array("quantity",$sh))$DataSet->AddPoint($data2b,"QuantityB");
|
||||
if(in_array("quantity",$sh))$DataSet->AddPoint($data2n,"QuantityN");
|
||||
if(in_array("pln_margin",$sh))$DataSet->AddPoint($data3b,"PLN_MarginB");
|
||||
if(in_array("pln_margin",$sh))$DataSet->AddPoint($data3n,"PLN_MarginN");
|
||||
if(in_array("margin",$sh))$DataSet->AddPoint($data4b,"MarginB");
|
||||
if(in_array("margin",$sh))$DataSet->AddPoint($data4n,"MarginN");
|
||||
$products[]=" ";
|
||||
$DataSet->AddPoint($products,"Products");
|
||||
$DataSet->AddAllSeries();
|
||||
$DataSet->SetAbsciseLabelSerie("Products");
|
||||
|
||||
if(in_array("sales",$sh)){
|
||||
$DataSet->SetSerieName("Sales ".($year-1)." - ".number_format($sum1b,2,",","."),"SalesB");
|
||||
$DataSet->SetSerieName("Sales ".($year)." - ".number_format($sum1,2,",","."),"SalesN");
|
||||
}
|
||||
if(in_array("quantity",$sh)){
|
||||
$DataSet->SetSerieName("Quantity ".($year-1)." - ".number_format($sum2b,2,",","."),"QuantityB");
|
||||
$DataSet->SetSerieName("Quantity ".($year)." - ".number_format($sum2,2,",","."),"QuantityN");
|
||||
}
|
||||
if(in_array("pln_margin",$sh)){
|
||||
$DataSet->SetSerieName("PLN Margin ".($year-1)." - ".number_format($sum3b,2,",","."),"PLN_MarginB");
|
||||
$DataSet->SetSerieName("PLN Margin ".($year)." - ".number_format($sum3,2,",","."),"PLN_MarginN");
|
||||
}
|
||||
if(in_array("margin",$sh)){
|
||||
$margb=100*$sum3b/$sum1b;
|
||||
$margn=100*$sum3/$sum1;
|
||||
$DataSet->SetSerieName("Margin ".($year-1)." - ".round($margb,2)."%","MarginB");
|
||||
$DataSet->SetSerieName("Margin ".($year)." - ".round($margn,2)."%","MarginN");
|
||||
}
|
||||
|
||||
// Initialise the graph
|
||||
$Test = new pChart(1900,900);
|
||||
|
||||
$colors="";
|
||||
if(in_array("sales",$sh)){
|
||||
$colors.="0,204,0
|
||||
0,102,0
|
||||
";
|
||||
}
|
||||
if(in_array("quantity",$sh)){
|
||||
$colors.="153,153,153
|
||||
0,0,0
|
||||
";
|
||||
}
|
||||
if(in_array("pln_margin",$sh)){
|
||||
$colors.="51,52,173
|
||||
0,0,204
|
||||
";
|
||||
}
|
||||
if(in_array("margin",$sh)){
|
||||
$colors.="213,76,120
|
||||
136,32,66
|
||||
";
|
||||
}
|
||||
file_put_contents('modules/EcmCharts/palette.txt',$colors);
|
||||
|
||||
|
||||
$Test->loadColorPalette('modules/EcmCharts/palette.txt');
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",14);
|
||||
$Test->setGraphArea(80,30,1600,800);
|
||||
$Test->drawFilledRoundedRectangle(7,7,1900,880,5,240,240,240);
|
||||
$Test->drawGraphArea(255,255,255,TRUE);
|
||||
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,30,2,TRUE);
|
||||
$Test->drawGrid(4,TRUE,230,230,230,50);
|
||||
|
||||
// Draw the 0 line
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",6);
|
||||
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
|
||||
|
||||
// Draw the bar graph
|
||||
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
|
||||
/*
|
||||
$DataSet->RemoveSerie("SalesB");
|
||||
$DataSet->RemoveSerie("SalesN");
|
||||
$DataSet->RemoveSerie("QuantityB");
|
||||
$DataSet->RemoveSerie("QuantityN");
|
||||
$DataSet->RemoveSerie("PLN_MarginB");
|
||||
$DataSet->RemoveSerie("PLN_MarginN");
|
||||
$DataSet->RemoveSerie("Months");
|
||||
$DataSet->AddSerie("MarginB");
|
||||
$DataSet->AddSerie("MarginN");
|
||||
$DataSet->SetYAxisName("Margin");
|
||||
$Test->drawRightScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,0);
|
||||
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
|
||||
*/
|
||||
// Finish the graph
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",16);
|
||||
$Test->drawLegend(1600,37,$DataSet->GetDataDescription(),255,255,255);
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",20);
|
||||
$Test->drawTitle(50,22,$title,50,50,50,1900);
|
||||
$ar[]=$guid=create_guid();
|
||||
$Test->Render("modules/EcmCharts/files/".$guid.".png");
|
||||
return $guid;
|
||||
}
|
||||
|
||||
function generateImgChart($cat,$year,$account,$sh){
|
||||
if($cat=="cat")$cat="";
|
||||
$temp=0;
|
||||
$months=array("January","February","March","April","May","June","July","August","September","October","November","Dezember");
|
||||
$s1=getSalesByProduct($cat,$year."-01-01",$year."-12-31","",$account);
|
||||
$s2=getSalesByProduct($cat,($year-1)."-01-01",($year-1)."-12-31","",$account);
|
||||
$arr=array();
|
||||
$data_1n=array();
|
||||
$data_1b=array();
|
||||
$data_2n=array();
|
||||
$data_2b=array();
|
||||
$data_3n=array();
|
||||
$data_3b=array();
|
||||
$data_4n=array();
|
||||
$data_4b=array();
|
||||
for($i=1;$i<=12;$i++){
|
||||
if($i<10)$n="0".$i;
|
||||
else $n=$i;
|
||||
|
||||
$value1=$s1[$i];
|
||||
$value2=$s2[$i];
|
||||
|
||||
$dsc1+=$value1['dsc'];
|
||||
$dsc2+=$value2['dsc'];
|
||||
//if(in_array("sales",$sh)){
|
||||
if($value1['sales']>$temp)$temp=$value1['sales'];
|
||||
if(!$value1['sales'])$value1n=0;
|
||||
else $value1n=$value1['sales'];
|
||||
|
||||
if($value2['sales']>$temp)$temp=$value2['sales'];
|
||||
if(!$value2['sales'])$value1b=0;
|
||||
else $value1b=$value2['sales'];
|
||||
//}
|
||||
if(in_array("quantity",$sh)){
|
||||
if($value1['quantity']>$temp)$temp=$value1['quantity'];
|
||||
if(!$value1['quantity'])$value2n=0;
|
||||
else $value2n=$value1['quantity'];
|
||||
|
||||
if($value2['quantity']>$temp)$temp=$value2['quantity'];
|
||||
if(!$value2['quantity'])$value2b=0;
|
||||
else $value2b=$value2['quantity'];
|
||||
}
|
||||
//if(in_array("pln_margin",$sh)){
|
||||
$pln_margin=$value1['sales']-$value1['purchase'];
|
||||
if($pln_margin>$temp)$temp=$pln_margin;
|
||||
if(!$pln_margin)$value3n=0;
|
||||
$value3n=$pln_margin;
|
||||
|
||||
$pln_margin=$value2['sales']-$value2['purchase'];
|
||||
if($pln_margin>$temp)$temp=$pln_margin;
|
||||
if(!$pln_margin)$value3b=0;
|
||||
$value3b=$pln_margin;
|
||||
//}
|
||||
if(in_array("margin",$sh)){
|
||||
$mar++;
|
||||
if($value1['sales']>0)$margin=100*($value1['sales']-$value1['purchase'])/$value1['sales'];
|
||||
else $margin=0;
|
||||
if($margin>$temp_margin)$temp_margin=$margin;
|
||||
if(!$margin)$value4n=0;
|
||||
$value4n=$margin;
|
||||
|
||||
$marb++;
|
||||
if($value2['sales']>0)$margin=100*($value2['sales']-$value2['purchase'])/$value2['sales'];
|
||||
else $margin=0;
|
||||
if($margin>$temp_margin)$temp_margin=$margin;
|
||||
if(!$margin)$value4b=0;
|
||||
$value4b=$margin;
|
||||
}
|
||||
|
||||
$arr[]=array(
|
||||
"name"=>$months[$i-1],
|
||||
"value1n"=>$value1n,
|
||||
"value2n"=>$value2n,
|
||||
"value3n"=>$value3n,
|
||||
"value4n"=>$value4n,
|
||||
"value1b"=>$value1b,
|
||||
"value2b"=>$value2b,
|
||||
"value3b"=>$value3b,
|
||||
"value4b"=>$value4b,
|
||||
);
|
||||
}
|
||||
foreach($arr as $a){
|
||||
$sum1n+=$a['value1n'];
|
||||
$sum2n+=$a['value2n'];
|
||||
$sum3n+=$a['value3n'];
|
||||
$sum4n+=$a['value4n'];
|
||||
$sum1b+=$a['value1b'];
|
||||
$sum2b+=$a['value2b'];
|
||||
$sum3b+=$a['value3b'];
|
||||
$sum4b+=$a['value4b'];
|
||||
$data_1n[]=$a['value1n'];
|
||||
$data_1b[]=$a['value1b'];
|
||||
$data_2n[]=$a['value2n'];
|
||||
$data_2b[]=$a['value2b'];
|
||||
$data_3n[]=$a['value3n'];
|
||||
$data_3b[]=$a['value3b'];
|
||||
$data_4n[]=$a['value4n'];
|
||||
$data_4b[]=$a['value4b'];
|
||||
|
||||
$labels[]=repl($a['name']);
|
||||
}
|
||||
|
||||
if($account){
|
||||
$r=mysql_fetch_array(mysql_query("select name from accounts where id='".$account."'"));
|
||||
$acc_name=" - ".$r['name'];
|
||||
}
|
||||
if($cat){
|
||||
$r=mysql_fetch_array(mysql_query("select name from ecmproductcategories where id='".$cat."'"));
|
||||
$cat_name=" - ".$r['name'];
|
||||
}
|
||||
$title="Sales".$acc_name.$cat_name;
|
||||
|
||||
$data_1n[]=0;
|
||||
$data_1b[]=0;
|
||||
$data_2n[]=0;
|
||||
$data_2b[]=0;
|
||||
$data_3n[]=0;
|
||||
$data_3b[]=0;
|
||||
$data_4n[]=0;
|
||||
$data_4b[]=0;
|
||||
|
||||
$DataSet = new pData;
|
||||
if(in_array("sales",$sh))$DataSet->AddPoint($data_1b,"SalesB");
|
||||
if(in_array("sales",$sh))$DataSet->AddPoint($data_1n,"SalesN");
|
||||
if(in_array("quantity",$sh))$DataSet->AddPoint($data_2b,"QuantityB");
|
||||
if(in_array("quantity",$sh))$DataSet->AddPoint($data_2n,"QuantityN");
|
||||
if(in_array("pln_margin",$sh))$DataSet->AddPoint($data_3b,"PLN_MarginB");
|
||||
if(in_array("pln_margin",$sh))$DataSet->AddPoint($data_3n,"PLN_MarginN");
|
||||
if(in_array("margin",$sh))$DataSet->AddPoint($data_4b,"MarginB");
|
||||
if(in_array("margin",$sh))$DataSet->AddPoint($data_4n,"MarginN");
|
||||
$months[]=" ";
|
||||
$DataSet->AddPoint($months,"Months");
|
||||
$DataSet->AddAllSeries();
|
||||
$DataSet->SetAbsciseLabelSerie("Months");
|
||||
|
||||
$rdsc=mysql_fetch_array(mysql_query("select sum(discount) as d from ecminvoiceouts where discount>0 and deleted='0' and register_date like '".$ye."%'"));
|
||||
$sum1n-=$rdsc['d']/1.22;
|
||||
$rdsc=mysql_fetch_array(mysql_query("select sum(discount) as d from ecminvoiceouts where discount>0 and deleted='0' and register_date like '".($ye-1)."%'"));
|
||||
$sum1b-=$rdsc['d']/1.22;
|
||||
if(in_array("sales",$sh)){
|
||||
$DataSet->SetSerieName("Sales ".($year-1)." - ".number_format($sum1b,2,",","."),"SalesB");
|
||||
$DataSet->SetSerieName("Sales ".($year)." - ".number_format($sum1n,2,",","."),"SalesN");
|
||||
}
|
||||
if(in_array("quantity",$sh)){
|
||||
$DataSet->SetSerieName("Quantity ".($year-1)." - ".number_format($sum2b,2,",","."),"QuantityB");
|
||||
$DataSet->SetSerieName("Quantity ".($year)." - ".number_format($sum2n,2,",","."),"QuantityN");
|
||||
}
|
||||
if(in_array("pln_margin",$sh)){
|
||||
$DataSet->SetSerieName("PLN Margin ".($year-1)." - ".number_format($sum3b,2,",","."),"PLN_MarginB");
|
||||
$DataSet->SetSerieName("PLN Margin ".($year)." - ".number_format($sum3n,2,",","."),"PLN_MarginN");
|
||||
}
|
||||
if(in_array("margin",$sh)){
|
||||
$margb=100*$sum3b/$sum1b;
|
||||
$margn=100*$sum3n/$sum1n;
|
||||
$DataSet->SetSerieName("Margin ".($year-1)." - ".round($margb,2)."%","MarginB");
|
||||
$DataSet->SetSerieName("Margin ".($year)." - ".round($margn,2)."%","MarginN");
|
||||
}
|
||||
|
||||
// Initialise the graph
|
||||
$Test = new pChart(1900,900);
|
||||
|
||||
$colors="";
|
||||
if(in_array("sales",$sh)){
|
||||
$colors.="0,204,0
|
||||
0,102,0
|
||||
";
|
||||
}
|
||||
if(in_array("quantity",$sh)){
|
||||
$colors.="153,153,153
|
||||
0,0,0
|
||||
";
|
||||
}
|
||||
if(in_array("pln_margin",$sh)){
|
||||
$colors.="51,52,173
|
||||
0,0,204
|
||||
";
|
||||
}
|
||||
if(in_array("margin",$sh)){
|
||||
$colors.="213,76,120
|
||||
136,32,66
|
||||
";
|
||||
}
|
||||
file_put_contents('modules/EcmCharts/palette.txt',$colors);
|
||||
|
||||
|
||||
$Test->loadColorPalette('modules/EcmCharts/palette.txt');
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",16);
|
||||
$Test->setGraphArea(80,30,1600,800);
|
||||
$Test->drawFilledRoundedRectangle(7,7,1900,880,5,240,240,240);
|
||||
$Test->drawGraphArea(255,255,255,TRUE);
|
||||
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
|
||||
$Test->drawGrid(4,TRUE,230,230,230,50);
|
||||
|
||||
// Draw the 0 line
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",12);
|
||||
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
|
||||
|
||||
// Draw the bar graph
|
||||
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
|
||||
/*
|
||||
$DataSet->RemoveSerie("SalesB");
|
||||
$DataSet->RemoveSerie("SalesN");
|
||||
$DataSet->RemoveSerie("QuantityB");
|
||||
$DataSet->RemoveSerie("QuantityN");
|
||||
$DataSet->RemoveSerie("PLN_MarginB");
|
||||
$DataSet->RemoveSerie("PLN_MarginN");
|
||||
$DataSet->RemoveSerie("Months");
|
||||
$DataSet->AddSerie("MarginB");
|
||||
$DataSet->AddSerie("MarginN");
|
||||
$DataSet->SetYAxisName("Margin");
|
||||
$Test->drawRightScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,0);
|
||||
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
|
||||
*/
|
||||
// Finish the graph
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",16);
|
||||
$Test->drawLegend(1600,37,$DataSet->GetDataDescription(),255,255,255);
|
||||
$Test->setFontProperties("include/pChart/Fonts/arial.ttf",20);
|
||||
$Test->drawTitle(50,22,$title,50,50,50,1900);
|
||||
$ar[]=$guid=create_guid();
|
||||
$Test->Render("modules/EcmCharts/files/".$guid.".png");
|
||||
return $guid;
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user