Files
crm.twinpol.com/modules/EcmCharts/helperChart.php
2025-05-12 15:44:39 +00:00

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;
}
?>