943 lines
28 KiB
PHP
Executable File
943 lines
28 KiB
PHP
Executable File
<?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;
|
|
}
|
|
?>
|