0 || $numBilanC > 0) { print ''; print ' '; print 'Type de bilans'; print ''; if ($numBilanN > 0 && $numBilanC > 0) { print ''; print ''; } else if ($numBilanN > 0 && $numBilanC == 0) { print 'Réel normal ou Simplifié'; } else if ($numBilanN == 0 && $numBilanC > 0) { print 'Consolidé'; } print ''; print ''; } } // -------------------------------------------------------------------------- // // afficheSynthese // -------------------------------------------------------------------------- // function afficheSynthese($numBilanN, $numBilanC, $numBilanB, $numBilanA, $ratio, &$bilansInfos, &$ratiosInfos, &$dataEvol, &$dataGraph, $typeBilan, $page, $siret, $siren, $idEntreprise) { if ($numBilanN == 0 && $numBilanC == 0 && $numBilanB == 0 && $numBilanA == 0) { print ''; print ''; print ''; print ''; print ''; print '
 Aucun bilan disponible pour cette entreprise !
'; } else if ($numBilanN == 0 && $numBilanC == 0 && ($numBilanB > 0 || $numBilanA > 0)) { print ''; print ''; print ''; print ''; print ''; print '
 Bilan de banque/assurance non gérés
'; } else { print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; //TODO : Afficher ligne par ligne les éléments print synthese_tablerow($ratiosInfos, $dataEvol, $ratio); print ''; print '
'; if ($ratio != '') { print ''. 'Visionner le graphique'; } print ''; print synthese_formatdateCloture($bilansInfos, 2); print ''; print synthese_formatdateCloture($bilansInfos, 1); print 'Evolution'; print synthese_formatdateCloture($bilansInfos, 0); print 'Evolution 
'; print '
'; if (empty($ratio) == false) { // Affichage du graphique associé au ratio sélectionné print '
Evolution
'; if ($siret == 0 || $siren < 100) { $fileName = 'synthese-'.$idEntreprise; } else { $fileName = 'synthese-'.$siret; } if ($typeBilan != '') { $fileName .= '-'.$typeBilan; } if ($ratio != '') { $fileName .= '-'.$ratio; } if (count($dataEvol[$ratio]) <= 1) { print 'Les informations sont insuffisantes'. ' pour générer la courbe d\'évolution'; } else { print ''; } } else { // Affichage du graphique général if (count($dataGraph) <= 1) { print '
Les informations sont insuffisantes'. ' pour générer le graphique de synthèse
'; } else { print synthese_graph_linecompare($dataGraph); } } print '

'; } } // -------------------------------------------------------------------------- // // formatRatios // -------------------------------------------------------------------------- // function formatRatios($bilansInfos, $ratiosEntrep, $ratiosEntrepEvol, $ratiosInfos, $ratiosSecteur) { //Suppression des éléments ne possédant pas de date de cloture $index = 0; foreach($bilansInfos as $bilansInfo) { if(!isset($bilansInfo['dateCloture'])) { unset($bilansInfos[$index]); unset($ratiosEntrep[$index]); unset($ratiosEntrepEvol[$index]); unset($ratiosInfos[$index]); unset($ratiosSecteur[$index]); } $index++; } //Tri des tableaux par ordre décroissant suivant la date de cloture //Transformation du tableau sous forme clé => valeur foreach ($bilansInfos as $key => $row) { $bilansInfos[$key]['cle'] = $key; $date[$key] = $row['dateCloture']; $duree[$key] = $row['duree']; $devise[$key] = $row['devise']; $unite[$key] = $row['unite']; $cle[$key] = $row['cle']; } //Tri du tableau de référence suivant la date de cloture array_multisort( $date, SORT_DESC, $duree, SORT_DESC, $devise, SORT_DESC, $unite, SORT_DESC, $cle, SORT_DESC, $bilansInfos); //Tri des autres tableaux $tempRatiosEntrep = $ratiosEntrep; $tempRatiosEntrepEvol = $ratiosEntrepEvol; $tempRatiosSecteur = $ratiosSecteur; $i = 0; foreach ($bilansInfos as $row) { $ratiosEntrep[$i] = $tempRatiosEntrep[$row['cle']]; $ratiosEntrepEvol[$i] = $tempRatiosEntrepEvol[$row['cle']]; if(is_array($tempRatiosSecteur[$row['cle']])) $ratiosSecteur[$i] = $tempRatiosSecteur[$row['cle']]; //Génération données graphique actif $dataActif[$i] = array( graphPercent($i,'r51','r22'), graphPercent($i,'r52','r22'), graphPercent($i,'r53','r22'), graphPercent($i,'r60','r22'), graphPercent($i,'r61','r22'), graphPercent($i,'r62','r22'), graphPercent($i,'r63','r22'), ); //Génération données graphique passif $dataPassif[$i] = array( graphPercent($i,'r70','r22'), graphPercent($i,'r71','r22'), graphPercent($i,'r72','r22'), graphPercent($i,'r83','r22'), graphPercent($i,'r84','r22'), graphPercent($i,'r85','r22'), graphPercent($i,'r86','r22'), graphPercent($i,'r87','r22'), ); //Génération données graphique SIG $dataSIG[$i] = array( graphPercent($i,'r101','r101')-graphPercent($i,'r122','r101'), graphPercent($i,'r122','r101')-graphPercent($i,'r130','r101'), graphPercent($i,'r130','r101')-graphPercent($i,'r140','r101'), graphPercent($i,'r140','r101')-graphPercent($i,'r150','r101'), graphPercent($i,'r150','r101')-graphPercent($i,'r170','r101'), graphPercent($i,'r170','r101')-graphPercent($i,'r199','r101'), graphPercent($i,'r199','r101'), ); $i++; } //Fin de tri des tableaux return array( 'bilansInfos' => $bilansInfos, 'ratiosEntrep' => $ratiosEntrep, 'ratiosEntrepEvol' => $ratiosEntrepEvol, 'ratiosSecteur' => $ratiosSecteur, 'ratiosInfos' => $ratiosInfos, 'dataActif' => $dataActif, 'dataPassif' => $dataPassif, 'dataSIG' => $dataSIG ); } /** * Retourne un tableau de données formatés pour les graphiques. * @param array $bilansInfo * Le tableau des bilans * @param array $ratiosEntrep * Le tableau des ratios entreprise * @param string $ratio * Le ratio selectionné * @return array * Retourne un tableau structuré composé de dataGraph, et de dataEvol. */ function synthese_datagraph($bilansInfos, $ratiosEntrep, $ratio) { global $firephp; $dataGraph = array(); $dataEvol = array(); $tabRatioGraph = syntheseRatioGraph(); $tabRatioGraphEvol = syntheseRatio($ratio); $nbrAnnees = count($bilansInfos)-1; $i=0; foreach($bilansInfos as $dateCloture) { //Données pour le graphique if(isset($dateCloture['dateCloture'])) { $dataGraph[$i]['date'] = $dateCloture['dateCloture']; $dataGraph[$i]['duree'] = $dateCloture['duree']; foreach($tabRatioGraph as $item) { $dataGraph[$i][$item['ratio']] = $ratiosEntrep[$i][$item['ratio']]/$item['op']; } } //Données pour les graphiques évolutions if(isset($bilansInfos[$nbrAnnees-$i]['dateCloture'])){ foreach($tabRatioGraphEvol as $ratio => $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); } /** * Retourne un tableau de données formatés pour les graphiques. * @param array $bilansInfo * Le tableau des bilans * @param array $ratiosEntrep * Le tableau des ratios entreprise * @param string $ratio * Le ratio selectionné * @return array * Retourne un tableau structuré composé de dataGraph, et de dataEvol. */ function synthese_datagraphmin($bilansInfos, $ratiosEntrep) { global $firephp; $dataGraph = array(); $dataEvol = array(); $tabRatioGraphEvol = syntheseRatioMin(); $nbrAnnees = count($bilansInfos)-1; $i=0; foreach($bilansInfos as $dateCloture) { //Données pour les graphiques évolutions if(isset($bilansInfos[$nbrAnnees-$i]['dateCloture'])){ foreach($tabRatioGraphEvol as $ratio => $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, $ratio) { global $siret, $siren, $idEntreprise, $typeBilan, $firephp; $tabRatio = syntheseRatio($ratio); if (($siret*1)==0 || ($siren*1)<100){ $fileName = 'synthese-'.$idEntreprise; }else{ $fileName = 'synthese-'.$siret; } $fileName.= '-'.$typeBilan; $firephp->log($fileName, 'SyntheseTablerow - 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='./?page=synthese&q=dgraph&width=375&f='.synthese_graphEvol($dataEvol[$ratio], $unite, $ratio, $fileName); }else{ $class = ''; $href='#'; $ref=''; } $row.= ' Visionner le graphique'."\n"; $row.= ''."\n"; } return $row; } /** * 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_tablerowmin($ratiosInfos, $dataEvol) { global $siret, $siren, $idEntreprise, $typeBilan, $firephp; $tabRatio = syntheseRatioMin(); if (($siret*1)==0 || ($siren*1)<100){ $fileName = 'synthese-'.$idEntreprise; }else{ $fileName = 'synthese-'.$siret; } $fileName.= '-'.$typeBilan; $row = ''; foreach($tabRatio as $ratio => $info) { $row.= ''."\n"; $row.= ' '.$info['titre'].''."\n"; $row.= ' '.dRatio(2,$ratio).''."\n"; $row.= ' '.dTotal(2,$ratio, $info['total']).' %'."\n"; $row.= ' '.dRatio(1,$ratio).''."\n"; $row.= ' '.dTotal(1,$ratio, $info['total']).' %'."\n"; $row.= ' '.dRatio(0,$ratio).''."\n"; $row.= ' '.dTotal(0,$ratio, $info['total']).' %'."\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'; $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-'.$ratio.'.png'; if( cache_graph($path.$file) ){ $return = $file; } else { $unite = !empty($unite) ? $unite : 'KEUROS'; $labelsX = array(); $labelsY = array(); $dataX = array(); 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(65, 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); if($c->makeChart($path.$file) === TRUE){ $return = $file; } else{ $return = FALSE; } } } return $return; } /** * Génére le graphique de synthèse * @param array $data * @return string */ function synthese_graph_linecompare($data){ global $siret, $siren, $idEntreprise, $typeBilan; if (($siret*1)==0 || ($siren*1)<100){ $filename = 'synthese-'.$idEntreprise; }else{ $filename = 'synthese-'.$siret; } $filename.='-'.$typeBilan; $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-linecompare.png'; if( cache_graph($path.$file) ){ $return = ''; } else { //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); //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; } $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); if($c->makeChart($path.$file) === TRUE){ $return = ''; }else{ $return = 'Impossible de générer le graphique'; } } return $return; } // -------------------------------------------------------------------------- // // tabRatio // -------------------------------------------------------------------------- // $tabRatio = array( array('titre' => 'EQUILIBRE FINANCIER'), array('titre' => 'MARGE BRUTE D\'AUTOFINANCEMENT', 'stitre'=> '(MBA ou CAF)', 'ratio' => 'r233', 'parent' => 0, 'position' => '>'), array('titre' => 'COUVERTURE du BFR', 'stitre'=> '(FR/BFR)', 'ratio' => 'r234', 'parent' => 0, 'position' => '>'), array('titre' => 'COUVERTURE des IMMOS NETTES', 'stitre'=> '(Capitaux permanents / Immobilisations nettes)', 'ratio' => 'r237', 'parent' => 0, 'position' => '>'), array('titre' => 'COUVERTURE du CA', 'stitre'=> '(Fond de roulement net global sur 12m x 360'. ' / Chiffre d\'affaire)', 'ratio' => 'r238', 'parent' => 0, 'position' => '>'), array('titre' => 'SOLVABILITE', 'stitre'=> '(Capitaux propres / Ensemble des dettes)', 'ratio' => 'r239', 'parent' => 0, 'position' => '>'), array('titre' => 'INDEPENDANCE FINANCIERE', 'stitre'=> '(Cap.propres/Capitaux permanents)', 'ratio' => 'r240', 'parent' => 0, 'position' => '>'), array('titre' => 'PROFITABILITE'), array('titre' => 'RENTABILITE ECONOMIQUE', 'stitre'=> '(EBE/TOTAL bilan)', 'ratio' => 'r262', 'parent' => 7, 'position' => '>'), array('titre' => 'RENTABILITE FINANCIERE', 'stitre'=> '(Résult.Net/Cap.propres)', 'ratio' => 'r263', 'parent' => 7, 'position' => '>'), array('titre' => 'RENTABILITE COMMERCIALE', 'stitre'=> '(Résultat net/CA)', 'ratio' => 'r264', 'parent' => 7, 'position' => '>'), array('titre' => 'CONTRIBUTION DU CAPITAL', 'stitre'=> '(Capacité d\'autofinancement sur 12 mois'. ' / Capitaux permanents)', 'ratio' => 'r265', 'parent' => 7, 'position' => '>'), array('titre' => 'CONTRIBUTION DE LA VA', 'stitre'=>'(Capacité d\'autofinancement / Valeur ajoutée)', 'ratio' => 'r266', 'parent' => 7, 'position' => '>'), array('titre' => 'LIQUIDITE'), array('titre' => 'LIQUIDITE IMMEDIATE', 'stitre'=> '(Disponibilité / Dettes CT)', 'ratio' => 'r250', 'parent' => 13, 'position' => '>'), array('titre' => 'LIQUIDITE GENERALE', 'stitre'=> '(Act.circulant net/Dettes CT)', 'ratio' => 'r251', 'parent' => 13, 'position' => '>'), array('titre' => 'LIQUIDITE REDUITE', 'stitre'=>'(Disponibilité et créances réelles / Dettes CT)', 'ratio' => 'r252', 'parent' => 13, 'position' => '>'), array('titre' => 'ENDETTEMENT'), array('titre' => 'ENDETTEMENT', 'stitre'=> '(Dettes a + 1 an / Capitaux propres)', 'ratio' => 'r244', 'parent' => 17, 'position' => '<'), array('titre' => 'CAPACITE DE REMBOURSEMENT', 'stitre'=> '(Dettes.bancaires.(+MT+LT+C.bail)/CAF)', 'ratio' => 'r247', 'parent' => 17, 'position' => '<'), array('titre' => 'FINANCEMENT DES STOCKS', 'stitre'=> '(Dettes aux fournisseurs / Stock)', 'ratio' => 'r248', 'parent' => 17, 'position' => '<'), array('titre' => 'PRODUCTIVITE'), array('titre' => 'PRODUCTIVITE DE L\'ACTIF', 'stitre'=> '(Chiffre d\'affaire / Actif comptable)', 'ratio' => 'r271', 'parent' => 21, 'position' => '>'), array('titre' => 'DUREE CLIENT', 'stitre'=> '(Rotation clients en VJ TTC)', 'ratio' => 'r278', 'parent' => 21, 'position' => '<'), array('titre' => 'DUREE FOURNISSEUR', 'stitre'=> '(Rotation fournisseurs en JA TTC)', 'ratio' => 'r279', 'parent' => 21, 'position' => '<'), array('titre' => 'POIDS MASSE SALARIALE', 'stitre'=> '(Ch personnel / VA)', 'ratio' => 'r281', 'parent' => 21, 'position' => '<'), array('titre' => 'RENDEMENT', 'stitre'=> '(Production sur 12mois / Effectif)', 'ratio' => 'r261', 'parent' => 21, 'position' => '>'), array('titre' => 'PRODUCTIVITE', 'stitre'=> '(CA / Effectif)', 'ratio' => 'r267', 'parent' => 21, 'position' => '>')); // -------------------------------------------------------------------------- // // ratios_tablerow // -------------------------------------------------------------------------- // /** * 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, $bilan, $ratio = '') { global $siret, $siren, $idEntreprise, $typeBilan, $tabRatio; if (($siret * 1) == 0 || ($siren * 1) < 100) { $fileName = 'ratios-'.$idEntreprise; } else { $fileName = 'ratios-'.$siret; } $fileName .= '-'.$typeBilan; $row = ''; 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"; } } else if ($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; } // -------------------------------------------------------------------------- // // ratiosExport // -------------------------------------------------------------------------- // function ratiosExport($siren, $raisonSociale, $secteur, $type, $date, $duree, $ratiosInfos, $bilan, $nbEntNaf, $ratio = '') { global $tabRatio; $e = array('siren' => $siren, 'raisonSociale' => $raisonSociale, 'secteur' => $secteur, 'type' => $type, 'nbEntNaf' => $nbEntNaf); if (empty($ratio) == true) { $e['date'] = $date; $e['duree'] = $duree; $titre = ''; foreach ($tabRatio as $item) { if (isset($item['ratio'])) { $label = $item['titre']; $entr = dRatio ($bilan, $item['ratio']); $sect = dSecteur ($bilan, $item['ratio']); $pos = dPosition($bilan, $item['ratio'], $item['position']); if (preg_match('/bon/', $pos) == true) { $pos = 'bon'; } else if (preg_match('/mauvais/', $pos) == true) { $pos = 'mauvais'; } $e[$titre][] = array('label' => $label, 'entreprise' => $entr, 'secteur' => $sect, 'position' => $pos); } else { $titre = str_replace(' ', '_', $item['titre']); $e[$titre] = array(); } } } else { $e = array_merge($e, dGraph($ratio, $bilan)); } return $e; } /** * Enregistre le graphique bilan actif sous forme d'image. * @param array $data * Tableau structuré des données * @param string $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){ $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-actif.png'; if( cache_graph($path.$file) ){ $return = ''; } else { 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); 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){ $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-sig.png'; if( cache_graph($path.$file) ){ $return = ''; } else { 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); 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 string $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){ $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-graph-passif.png'; if( cache_graph($path.$file) ){ $return = ''; } else { 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); 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( cache_graph($path.$file) ){ $return = $file; }else{ require_once 'phpchartdir/phpchartdir.php'; if(count($data)<=1){ $return = 0; }else{ $labelsX = array(); $labelsY = array(); $dataX1 = array(); $dataX2 = array(); 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; } /** * * Génére l'histogramme flux de trésorerie * @param array $labels * @param array $data * @param string $filename * @return boolean|string */ function flux_graph($labels, $data, $filename) { $path = PATH_SITE.'/cache/imgcache/'; $file = $filename.'-flux.png'; $couleur = array(0xff8080, 0x80ff80, 0x8080ff); if( cache_graph($path.$file) ){ $return = $file; }else{ require_once 'phpchartdir/phpchartdir.php'; if(count($data)<=1){ $return = 0; }else{ $c = new XYChart(560, 300); $c->setPlotArea(55, 20, 300, 200); $legendObj = $c->addLegend(350, 20, false, "times.ttf", 9); $legendObj->setBackground(Transparent); $layer = $c->addBarLayer2(Stack); $layer->setBorderColor(Transparent, softLighting(Left)); $c->xAxis->setLabels($labels); $cptCouleur = 0; foreach ( $data as $d){ $layer->addDataSet($d['values'], $couleur[$cptCouleur], $d['titre']); $cptCouleur++; } $layer->setBarGap(0.2, 0); $c->yAxis->setAutoScale(0.2); if( $c->makeChart($path.$file) === TRUE ){ $return = $file; } else{ $return = FALSE; } } } return $return; } ?>