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