$info){ $dataEvol[$ratio][] = array( 'date'=>$bilansInfos[$nbrAnnees-$i]['dateCloture'], 'value'=>(($ratiosEntrep[$nbrAnnees-$i][$ratio]!='NS') ? $ratiosEntrep[$nbrAnnees-$i][$ratio]/$info['op'] : 0 ) ); } } $i++; } return array("graph" => $dataGraph, "evol" => $dataEvol); } /** * Formatte chaîne contenant la date formaté. * @param array $bilansInfo * Le tableau des bilans * @param array $nAnnee * Le numéro de l'année * @return string * Retourne la date formaté. */ function synthese_formatdateCloture($bilansInfos, $nAnnee){ if(isset($bilansInfos[$nAnnee]['dateCloture'])) { print substr($bilansInfos[$nAnnee]['dateCloture'],6,2).'/'.substr($bilansInfos[$nAnnee]['dateCloture'],4,2).'/'.substr($bilansInfos[$nAnnee]['dateCloture'],0,4).'
'.$bilansInfos[$nAnnee]['duree'].' mois'; }else{ print '-'; } } /** * Retourne une chaîne contenant les ligne d'un tableau html. * @param array $ratiosInfos * Le tableau des informations ratios * @param array $dataEvol * Le tableau des données évolution * @param array $tabRatio * Un tableau des ratios à utiliser pour générer les lignes * @return string * Retourne une chaîne. */ function synthese_tablerow($ratiosInfos, $dataEvol, $tabRatio){ global $fileName; $row = ''; foreach($tabRatio as $ratio => $info) { $row.= ''."\n". ' '.$info['titre'].''."\n". ' '.dRatio(2,$ratio).''."\n". ' '.dRatio(1,$ratio).''."\n". ' '.dEvol(1,$info['evol']).''."\n". ' '.dRatio(0,$ratio).''."\n". ' '.dEvol(0,$info['evol']).''."\n"; if(count($tabRatio)!=1){ $class = 'class="sTip"'; $href='/?page=synthese&siret='.$_REQUEST['siret'].'&idEntreprise='.$_REQUEST['idEntreprise'].'&ratio='.$ratio; $unite = ''; if(isset($info['unite']) && $info['unite']==1){ $unite = $ratiosInfos[$info['evol']]['unite']; } $rel='./pages/synthese_dgraph.php?widht=375&f='.synthese_graphEvol($dataEvol[$ratio], $unite, $ratio, $fileName); }else{ $class = ''; $href='#'; $ref=''; } $row.= ' Visionner le graphique'."\n"; $row.= ''."\n"; } return $row; } /** * Retourne l'url de la page d'appel du graphique avec tous ces paramètres. * @param array $data * Les données du tableau * @return string * Retourne une chaîne. */ function synthese_graphEvol($data, $unite, $ratio, $filename){ require_once 'phpchartdir/phpchartdir.php'; $unite = ( $_REQUEST['unite']!='' ? $unite : 'KEUROS' ); if(count($data)<=1){ $return = 0; }else{ foreach($data as $value) { $dataX[] = $value['value']; $labelsX[] = substr($value['date'],0,4); } $i=-100; while($i>100){ $labelsY[] = $i;} # Create a XYChart object of size 250 x 250 pixels $c = new XYChart(350, 250); $c->setPlotArea(55, 10, 280, 200); $c->yAxis->setTitle($unite); $c->xAxis->setTitle("Années"); $c->xAxis->setWidth(2); $c->yAxis->setWidth(2); $c->addLineLayer($dataX); # Set the labels. $c->yAxis->setLabels($labelsY); $c->yAxis->setLabelStep(10); $c->xAxis->setLabels($labelsX); $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-'.$ratio.'.png'; if($c->makeChart($path.$file) === TRUE){ $return = $file; } else{ $return = FALSE; } } return $return; } function synthese_graph_linecompare($data, $filename){ global $firephp; //Graphique style linecompare / CA / FR / BFR require_once 'phpchartdir/phpchartdir.php'; //Tri des données par date et par ordre croissant foreach ($data as $key => $row) { $date[$key] = $row['date']; } array_multisort($date, SORT_ASC, $data); $firephp->log($data, 'data'); //Définition des valeurs pour le graph $dataBFR = array(); $dataFR = array(); $dataCA = array(); $i=0; //Parcourir les années foreach($data as $item){ $anneeFin = substr($item['date'],0,4); $moisFin = substr($item['date'],4,2); $jourFin = substr($item['date'],6,2); //Calcul de la date de début $dateDebut = date("Ymd", mktime(0, 0, 0, $moisFin-$item['duree'], $jourFin, $anneeFin)); $anneeDebut = substr($dateDebut,0,4); $moisDebut = substr($dateDebut,4,2); $jourDebut = substr($dateDebut,6,2); //Affectation des abscisses $dataBFR['x'][$i] = $dataFR['x'][$i] = $dataCA['x'][$i] = $dataEBE['x'][$i] = chartTime((int)$anneeDebut, (int)$moisDebut, (int)$jourDebut); $dataBFR['x'][$i+1] = $dataFR['x'][$i+1] = $dataCA['x'][$i+1] = $dataEBE['x'][$i+1] = chartTime((int)$anneeFin, (int)$moisFin, (int)$jourFin); //Affectation des ordonnées $dataBFR['y'][$i] = $dataBFR['y'][$i+1] = $item['r236']; $dataFR['y'][$i] = $dataFR['y'][$i+1] = $item['r235']; $dataCA['y'][$i] = $dataCA['y'][$i+1] = $item['r6']; $dataEBE['y'][$i] = $dataEBE['y'][$i+1] = $item['r146']; $i+=2; } $firephp->log($dataCA,'dataCA'); $c = new XYChart(570, 350, 0xcccccc, 0x000000, 1); $c->addTitle("Synthèse *", "timesbi.ttf", 15, 0x000000); $c->addText(60, 320, "* Elements financier rapportés à 12 mois" ); $c->setPlotArea(60, 80, 500, 200, 0xffffff, -1, -1, 0xcccccc, 0xcccccc); $c->yAxis->setTitle("KEUROS","timesbi.ttf",10); $c->xAxis->setTitle( "<*block,valign=absmiddle*>Années<*/*>"); $c->xAxis->setWidth(2); $c->yAxis->setWidth(2); // Add a legend box at (55, 32) (top of the chart) with horizontal layout. Use 9 pts // Arial Bold font. Set the background and border color to Transparent. $legendObj = $c->addLegend(55, 30, false, "times.ttf", 9); $legendObj->setBackground(Transparent); // Add a blue (0000ff) step line layer to the chart and set the line width to 2 pixels $layer1 = $c->addStepLineLayer($dataFR['y'], 0x0000ff, "FONDS DE ROULEMENT"); $layer1->setXData($dataFR['x']); $layer1->setLineWidth(2); // Add a red (ff0000) step line layer to the chart and set the line width to 2 pixels $layer0 = $c->addStepLineLayer($dataBFR['y'], 0xff0000, "BESOIN EN FONDS DE ROULEMENT"); $layer0->setXData($dataBFR['x']); $layer0->setLineWidth(2); // Add a green (00ff00) step line layer to the chart and set the line width to 2 pixels $layer2 = $c->addStepLineLayer($dataCA['y'], 0x00ff00, "CHIFFRE D'AFFAIRES"); $layer2->setXData($dataCA['x']); $layer2->setLineWidth(2); // Add a black (000000) step line layer style dash to the chart and set the line width to 2 pixels $layer3 = $c->addStepLineLayer($dataEBE['y'], $c->dashLineColor(0x000000, DashLine), "EXCEDENT BRUT D'EXPLOITATION"); $layer3->setXData($dataEBE['x']); $layer3->setLineWidth(2); # If the FR line gets above the BFR line, color to area between the lines red (ff0000) $c->addInterLineLayer($layer0->getLine(0), $layer1->getLine(0), 0xff0000, Transparent); # If the FR line gets below the lower BFR line, color to area between the lines light green (8099ff99) $c->addInterLineLayer($layer0->getLine(0), $layer1->getLine(0), Transparent, 0x8044ff44); $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-linecompare.png'; if($c->makeChart($path.$file) === TRUE){ $return = ''; }else{ $return = 'Impossible de générer le graphique'; } return $return; } /** * Retourne une chaîne contenant la ligne d'un tableau html. * @param array $ratiosInfos * Le tableau des information ratios * @param array $dataEvol * Le tableau des données évolution * @param array $tabRatio * Un tableau des ratios à utiliser pour le générer les lignes * @return string * Retourne une chaîne. */ function ratios_tablerow($ratiosInfos, $tabRatio, $bilan, $ratio = ''){ global $siren, $idEntreprise, $typeBilan; if (($siret*1)==0 || ($siren*1)<100){ $fileName = 'ratios-'.$idEntreprise; }else{ $fileName = 'ratios-'.$siret; } $fileName.= '-'.$typeBilan; foreach($tabRatio as $item) { if($ratio==''){ if(isset($item['ratio'])){ $row.= ''."\n"; $row.= ' '.$item['titre'].'
'.$item['stitre'].'
'."\n"; $row.= ' '.dRatio($bilan,$item['ratio']).''."\n"; $row.= ' '.dSecteur($bilan,$item['ratio']).''."\n"; $row.= ' '; $row.= ''."\n"; $row.= dPosition($bilan,$item['ratio'],$item['position']); $row.= ''; $row.= ''."\n"; $row.= ''."\n"; }else{ $row.= ''."\n"; $row.= ' '.$item['titre'].''."\n"; $row.= ' Entreprise'."\n"; $row.= ' Secteur'."\n"; $row.= ' Position'."\n"; $row.= ''."\n"; } }elseif($ratio==$item['ratio']){ $row.= ''."\n". ' '.$tabRatio[$item['parent']]['titre'].''."\n". ' Entreprise'."\n". ' Secteur'."\n". ' Position'."\n". ''."\n"; $row.= ''."\n". ' '.$item['titre'].'
'.$item['stitre'].'
'."\n". ' '.dRatio($bilan,$item['ratio']).''."\n". ' '.dSecteur($bilan,$item['ratio']).''."\n". ' '."\n". ' '."\n". dPosition($bilan,$item['ratio'],$item['position'])."\n". ' '."\n". ' '."\n". ''."\n"; } } return $row; } /** * Enregistre le graphique bilan actif sous forme d'image. * @param array $data * Tableau structuré des données * @param array $filename * Le nom de fichier généré * @return string * Retourne un message d'erreur ou le code HTML d'affichage. */ function bilans_graph_actif($data, $filename){ require_once 'phpchartdir/phpchartdir.php'; $w = 570; $h = 210; $x = round($w/2); $y = round($h/2); $radius=90; $c = new PieChart($w, $h); $labels = array('Immo. incorporelles', 'Immo. corporelles', 'Immo. financières', 'Stock et encours', 'Créances Clients', 'Autres créances', 'Trésorerie Active'); $textBoxObj = $c->addTitle("Composition de l'actif", "timesbi.ttf", 15); $c->setPieSize($x, $y, $radius); $c->setLabelLayout(SideLayout); $t = $c->setLabelStyle(); $t->setBackground(SameAsMainColor, Transparent, glassEffect()); $t->setRoundedCorners(5); # Set the border color of the sector the same color as the fill color. Set the line # color of the join line to black (0x0) $c->setLineColor(SameAsMainColor, 0x000000); $c->setStartAngle(135); $c->setLabelFormat("<*block,valign=absmiddle*>{label} <*font=timesbi.ttf,size=0*>({percent|0}%)"); $c->setData($data, $labels); $c->set3D(20); $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-bilansactif.png'; if($c->makeChart($path.$file) === TRUE){ $return = ''; }else{ $return = 'Impossible de générer le graphique'; } return $return; } /** * Enregistre le graphique bilan SIG sous forme d'image. * @param array $data * Tableau structuré des données * @param array $filename * Le nom de fichier généré * @return string * Retourne un message d'erreur ou le code HTML d'affichage. */ function bilans_graph_sig($data, $filename){ require_once 'phpchartdir/phpchartdir.php'; $w = 570; $h = 210; $x = round($w/2); $y = round($h/2); $radius=70; $c = new PieChart($w, $h); $labels = array('Achats de marchandises.', 'Autres achats externes', 'Charges de fonctionnement', 'Amortissement et provisions', 'Perte financière', 'Impôts sociétés', 'RÉSULTAT NET', ); $textBoxObj = $c->addTitle("Solde Intermédiaire de Gestion", "timesbi.ttf", 15); $c->setPieSize($x, $y, $radius); $c->setLabelLayout(SideLayout); $t = $c->setLabelStyle(); $t->setBackground(SameAsMainColor, Transparent, glassEffect()); $t->setRoundedCorners(5); $c->setLineColor(SameAsMainColor, 0x000000); $c->setLabelFormat("<*block,valign=absmiddle*>{label} <*font=arial.ttf,size=0*>({percent|0}%)"); $c->setStartAngle(135); $c->setData($data, $labels); $c->set3D(20); $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-bilanssig.png'; if($c->makeChart($path.$file) === TRUE){ $return = ''; }else{ $return = 'Impossible de générer le graphique'; } return $return; } /** * Enregistre le graphique bilan passif sous forme d'image. * @param array $data * Tableau structuré des données * @param array $filename * Le nom de fichier généré * @return string * Retourne un message d'erreur ou le code HTML d'affichage. */ function bilans_graph_passif($data, $filename){ require_once 'phpchartdir/phpchartdir.php'; $w = 570; $h = 210; $x=round($w/2); $y=round($h/2); $radius=90; $c = new PieChart($w, $h); $labels = array('Fonds propres', 'Provisions Risques', 'Compte Courant', 'Dettes Financières', 'Dettes Fournisseurs', 'Dettes fiscales', 'Autres Dettes', 'Trésorerie Passive'); $textBoxObj = $c->addTitle("Composition du passif", "timesbi.ttf", 15); $c->setPieSize($x, $y, $radius); $c->setLabelLayout(SideLayout); $t = $c->setLabelStyle(); $t->setBackground(SameAsMainColor, Transparent, glassEffect()); $t->setRoundedCorners(5); $c->setLineColor(SameAsMainColor, 0x000000); $c->setStartAngle(135); $c->setLabelFormat("<*block,valign=absmiddle*>{label} <*font=timesbi.ttf,size=0*>({percent|0}%)"); $c->setData($data, $labels); $c->set3D(20); $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-bilanspassif.png'; if($c->makeChart($path.$file) === TRUE){ $return = ''; }else{ $return = 'Impossible de générer le graphique'; } return $return; } /** * Enregistre le graphique évolution. * @param array $data * Tableau structuré des données * @param array $filename * Le nom de fichier généré * @return string * Retourne un message d'erreur ou le code HTML d'affichage. */ function ratios_graph($ratio, $data, $filename){ $path = PATH_SITE.'/cache/imgcache/'; if($ratio != ''){ $file = $filename.'-'.$ratio.'.png'; }else{ $file = $filename.'.png'; } if(file_exists($path.$file)){ $return = $file; }else{ require_once 'phpchartdir/phpchartdir.php'; if(count($data)<=1){ $return = 0; }else{ foreach($data['data'] as $value){ $dataX1[] = $value['entreprise']; $dataX2[] = $value['secteur']; $labelsX[] = substr($value['date'],0,4); } $i=-100; while($i>100){ $labelsY[] = $i;} $c = new XYChart(350, 250); $c->setPlotArea(55, 10, 280, 200); $c->yAxis->setTitle($data['unite']); $c->xAxis->setTitle("Années"); $c->xAxis->setWidth(2); $c->yAxis->setWidth(2); $legendObj = $c->addLegend(50, 10, false, "times.ttf", 9); $legendObj->setBackground(Transparent); $c->addLineLayer($dataX1, 0x0000ff, "Entreprise"); $c->addLineLayer($dataX2, 0x008C00, "Secteur"); $c->yAxis->setLabels($labelsY); $c->yAxis->setLabelStep(10); $c->xAxis->setLabels($labelsX); if($c->makeChart($path.$file) === TRUE){ $return = $file; } else{ $return = FALSE; } } } return $return; } ?>