0) ){ $unite = 'KEURO'; $div = 1000; }else{ $unite = $ratiosInfos[$nRatio]['unite']; } //Données pour les graphiques évolutions $data[] = array( 'date'=>$bilansInfos[$nbrAnnees-$i]['dateCloture'], 'entreprise'=>(($ratioE!='NS') ? $ratioE/$div : 0 ), 'secteur'=>(($ratioS!='NS') ? $ratioS/$div : 0 ), ); } $i++; } $evol = array('data' => $data, 'unite' => $unite); return $evol; } /** * Affiche la position de l'entité en comparant son ratio avec le ratio secteur. * @param int $nAnnee * Le n° de l'année à comparé. * @param string $nRatio * Le n° de ratio. * @param string $compare * < ou > pour définir si le ratio doit être supérieur ou inférieur au ratio secteur */ function dPosition($nAnnee,$nRatio,$compare){ global $ratiosSecteur; global $ratiosEntrep; $ratioS = $ratiosSecteur[$nAnnee][$nRatio]; $ratioE = $ratiosEntrep[$nAnnee][$nRatio]; $ecart = 1/100; if( $ratioS=='NS' || $ratioE=='NS' || $ratioS==NULL || $ratioE==NULL){ $return = '-'; }elseif($compare=='>'){ if( $ratioE+$ecart > $ratioS ){ $return = ''; }elseif( ($ratioS-($ratioS*$ecart))<$ratioE && ($ratioS+($ratioS*$ecart))>$ratioE){ $return = '-'; }else{ $return = ''; } }elseif($compare=='<'){ if($ratioE < $ratioS){ $return = ''; }elseif( ($ratioS-($ratioS*$ecart))<$ratioE && ($ratioS+($ratioS*$ecart))>$ratioE){ $return = '-'; }else{ $return = ''; } } return $return; } /** * Affiche le ratio secteur. * @param int $nAnnee * Le n° de l'année. * @param string $nRatio * Le n° de ratio. */ function dSecteur($nAnnee,$nRatio){ global $ratiosSecteur; global $ratiosInfos; $ratio = $ratiosSecteur[$nAnnee][$nRatio]; $return = ''; $formatRatio = TRUE; if ($ratio=='NS') { $return.= 'NS'; $formatRatio = FALSE; }elseif(substr($ratio,0,1)=='<' ){ $return.= '< '; $ratio = substr($ratio,1)*1; }elseif(substr($ratio,0,1)=='>'){ $return.= '> '; $ratio = substr($ratio,1)*1; }elseif($ratio==NULL){ $return.= '-'; $formatRatio = FALSE; } if($formatRatio == TRUE) { if ( ($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratio)/1000)>0) ){ $return.= number_format($ratio/1000, 0, '', ' ').' K€'; }elseif (($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratio)/1000)<0)) { $return.= number_format($ratio, 0, '', ' ').' €'; }elseif (($ratiosInfos[$nRatio]['unite']=='Jours')) { $return.= number_format($ratio, 0, '', ' ').' '.$ratiosInfos[$nRatio]['unite']; }elseif (($ratiosInfos[$nRatio]['unite']=='AN')) { $return.= round($ratio, 2).' '.$ratiosInfos[$nRatio]['unite']; }elseif (($ratiosInfos[$nRatio]['unite']=='%')) { $return.= round($ratio).' '.$ratiosInfos[$nRatio]['unite']; }else{ $return.= $ratio.' '.$ratiosInfos[$nRatio]['unite']; } } return $return; } /** * Affiche le ratio de l'entité. * @param int $nAnnee * Le n° de l'année. * @param string $nRatio * Le n° de ratio. */ function dRatio($nAnnee,$nRatio){ global $ratiosEntrep, $ratiosInfos, $firephp; $ratio = $ratiosEntrep[$nAnnee][$nRatio]; $return = ''; $formatRatio = TRUE; if ($ratio=='NS' || $ratio==0) { $return.= 'NS'; $formatRatio = FALSE; }elseif(substr($ratio,0,1)=='<' ){ $return.= '< '; $ratio = substr($ratio,1)*1; }elseif(substr($ratio,0,1)=='>'){ $return.= '> '; $ratio = substr($ratio,1)*1; }elseif($ratio==NULL){ $return.= '-'; $formatRatio = FALSE; } if($formatRatio == TRUE) { if ( ($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratio)/1000)>0) ){ $return.= number_format($ratio/1000, 0, '', ' ').' K€'; }elseif (($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratio)/1000)<0)) { $return.= number_format($ratio, 0, '', ' ').' €'; }elseif (($ratiosInfos[$nRatio]['unite']=='Jours')) { $return.= number_format($ratio, 0, '', ' ').' '.$ratiosInfos[$nRatio]['unite']; }elseif (($ratiosInfos[$nRatio]['unite']=='AN')) { $return.= round($ratio, 2).' '.$ratiosInfos[$nRatio]['unite']; }elseif (($ratiosInfos[$nRatio]['unite']=='%')) { $return.= round($ratio).' '.$ratiosInfos[$nRatio]['unite']; }else{ $return.= $ratio.' '.$ratiosInfos[$nRatio]['unite']; } } return $return; } /** * Affiche l'évolution d'un ratio. * @param int $nAnnee * Le n° de l'année. * @param string $nRatio * Le n° de ratio. */ function dEvol($nAnnee,$nRatio){ global $ratiosEntrepEvol; $ratio = $ratiosEntrepEvol[$nAnnee][$nRatio]; if ($ratio=='NS') { return 'NS'; }elseif($ratio==NULL){ return '-'; }else{ return $ratio.' %'; } } function dTotal($nAnnee, $nRatio, $nTotal) { global $ratiosEntrep, $firephp; $ratio = isset($ratiosEntrep[$nAnnee][$nRatio]) ? $ratiosEntrep[$nAnnee][$nRatio] : 0; $total = isset($ratiosEntrep[$nAnnee][$nTotal]) ? $ratiosEntrep[$nAnnee][$nTotal] : 0; $firephp->log($total, 'total'); if($total!=0){ return number_format($ratio*100/$total, 2); }else{ return '-'; } } /** * Retourne le pourcentage d'un ratio par rapport au total pour les graphiques . * @param sting $nRatio * Le n° de ratio. * @param string $totalRatio * Le n° du ratio total * @return int */ function graphPercent($nAnnee,$nRatio,$totalRatio){ global $ratiosEntrep; $ratio = isset($ratiosEntrep[$nAnnee][$nRatio]) ? $ratiosEntrep[$nAnnee][$nRatio] : 0; $totalRatio = $ratiosEntrep[$nAnnee][$totalRatio]; if ( ($ratio!='NS' || $ratio!=NULL) && ($totalRatio!=0 || $totalRatio!='NS')){ return $ratio*100/$totalRatio; }else{ return 0; } } /** * Affiche le pourcentage d'un ratio par rapport au total. * @param sting $nRatio * Le n° de ratio. * @param string $totalRatio * Le n° du ratio total * @return int */ function dPercent($nAnnee,$nRatio,$totalRatio){ global $ratiosEntrep; $ratio = $ratiosEntrep[$nAnnee][$nRatio]; $totalRatio = $ratiosEntrep[$nAnnee][$totalRatio]; if ($ratio=='NS') { $return = 'NS'; }elseif($ratio==NULL){ $return = '-'; }else { if ($totalRatio!=0 || $totalRatio!='NS'){ $percent = $ratio*100/$totalRatio; }else{ $percent = 0; } $return = round($percent, 2); } return $return; } /** * Formatte le commentaire pour l'afficher dans l'infobulle. * Place un retour à la ligne si le texte parait plus long que le bloc d'affichage * Transforme les entités HTML * Transforme le \n par des
* @param string $text * Commentaire . * @return string */ function wrapComment($text){ $fontSize = 2; $blockSize = 500; $newtext = wordwrap($text, $blockSize/$fontSize , "\n"); $newtext = htmlentities($newtext); $newtext = nl2br($newtext); return $newtext; } /** * Compte le nombre de bilans par type et renvoi un type de bilan par defaut * @param array $bilansInfos * @param string $typeBilan * @return array */ function countBilans($bilansInfos, $typeBilan='') { $numBilanC = 0; $numBilanN = 0; $numBilanS = 0; $numBilanA = 0; $numBilanB = 0; if(count($bilansInfos)>0) { foreach($bilansInfos as $key => $item) { if($item['typeBilan']=='C') { $numBilanC++; } if($item['typeBilan']=='N') { $numBilanN++; } if($item['typeBilan']=='S') { $numBilanS++; } if($item['typeBilan']=='B') { $numBilanB++; } if($item['typeBilan']=='A') { $numBilanA++; } } } $numBilanN = $numBilanN+$numBilanS; if($typeBilan=='') { if($numBilanN>0){ $typeBilan = 'N'; } if($numBilanN==0 && $numBilanC>0){ $typeBilan = 'C'; } } $numBilan = array('N' => $numBilanN, 'C' => $numBilanC, 'B' => $numBilanB, 'A' => $numBilanA); return array($typeBilan, $numBilan); } /** * Filtre les bilans suivants leur type * @param array $bilansInfos * @param array $ratiosEntrep * @param array $ratiosEntrepEvol * @param array $dataActif * @param array $dataPassif * @param array $dataSIG * @param string $typeBilan * @return void */ function filtreTypeBilans($bilansInfos, $ratiosEntrep, $ratiosEntrepEvol, $ratiosSecteur, $dataActif, $dataPassif, $dataSIG, $typeBilan) { global $firephp; if(count($bilansInfos)>0) { //Eliminer les doublons, on garde en priorités les bilans de type S $tabBilanS = array(); $tabBilanN = array(); foreach($bilansInfos as $key => $item) { if($item['typeBilan']=='S'){ $tabBilanS[$item['dateCloture']] = 1; } } //Suppression des doublons + les types S deviennent des types N $index = 0; foreach($bilansInfos as $key => $item) { $date = $item['dateCloture']; $type = $item['typeBilan']; if($type=='N' && array_key_exists($date,$tabBilanS)) { $firephp->info('Suppression doublon'); $firephp->log($index,'index'); array_splice($bilansInfos, $index, 1); array_splice($ratiosEntrep, $index, 1); array_splice($ratiosEntrepEvol, $index, 1); array_splice($ratiosSecteur, $index, 1); if(count($dataActif)>0) array_splice($dataActif, $index, 1); if(count($dataPassif)>0) array_splice($dataPassif, $index, 1); if(count($dataSIG)>0) array_splice($dataSIG, $index, 1); $index--; } $index++; } $index=0; foreach($bilansInfos as $key => $item) { if($item['typeBilan']=='S'){ $bilansInfos[$index]['typeBilan']='N'; } $index++; } //En fonction du type de bilan sélectionné //on filtre les bilans avant de les envoyer sur l'affichage $index = 0; foreach($bilansInfos as $key => $item) { if($item['typeBilan']!=$typeBilan ) { $firephp->info('Suppression pour filtrage'); $firephp->log($index,'index'); array_splice($bilansInfos, $index, 1); array_splice($ratiosEntrep, $index, 1); array_splice($ratiosEntrepEvol, $index, 1); //array_splice($ratiosSecteur, $index, 1); if(count($dataActif)>0) array_splice($dataActif, $index, 1); if(count($dataPassif)>0) array_splice($dataPassif, $index, 1); if(count($dataSIG)>0) array_splice($dataSIG, $index, 1); $index--; } $index++; } } return array($bilansInfos, $ratiosEntrep, $ratiosEntrepEvol, $ratiosSecteur, $dataActif, $dataPassif, $dataSIG); } /** * Retourne les ratios à afficher * @param string $ratio * @return array */ function syntheseRatio($ratio) { $tabRatio = array( 'r5' => array('evol'=>'r6', 'op' => 1000, 'titre'=>'CHIFFRE D\'AFFAIRES'), 'r7' => array('evol'=>'r8', 'op' => 1000, 'titre'=>'RESULTAT COURANT AVANT IMPOTS'), 'r10' => array('evol'=>'r11', 'op' => 1000, 'titre'=>'RESULTAT NET'), 'r18' => array('evol'=>'r19', 'op' => 1000, 'titre'=>'FONDS PROPRES'), 'r22' => array('evol'=>'r23', 'op' => 1000, 'titre'=>'TOTAL BILAN'), 'r231' => array('evol'=>'r235', 'op' => 1000, 'titre'=>'FONDS DE ROULEMENT'), 'r232' => array('evol'=>'r236', 'op' => 1000, 'titre'=>'BESOIN EN FONDS DE ROULEMENT'), 'r63' => array('evol'=>'r64', 'op' => 1000, 'titre'=>'TRESORERIE'), 'r24' => array('evol'=>'r24', 'op' => 1, 'titre'=>'EFFECTIF', 'unite' => 1), ); if($ratio!=''){ $tabRatio = array( $ratio => $tabRatio[$ratio]); } return $tabRatio; } function syntheseRatioMin() { $tabRatio = array( 'r5' => array('total'=>'r5', 'total_info'=>'% ca', 'op' => 1000, 'titre'=>'CHIFFRE D\'AFFAIRES'), 'r16' => array('total'=>'r5', 'total_info'=>'% ca', 'op' => 1000, 'titre'=>'RESULTAT D\'EXPLOITATION'), 'r7' => array('total'=>'r5', 'total_info'=>'% ca', 'op' => 1000, 'titre'=>'RESULTAT COURANT'), 'r10' => array('total'=>'r5', 'total_info'=>'% ca', 'op' => 1000, 'titre'=>'RESULTAT NET'), 'r70' => array('total'=>'r22', 'total_info'=>'% bilan', 'op' => 1000, 'titre'=>'FONDS PROPRES'), 'r63' => array('total'=>'', 'total_info'=>'', 'op' => 1000, 'titre'=>'TRESORERIE NETTE'), 'r20' => array('total'=>'r5', 'total_info'=>'% ca', 'op' => 1000, 'titre'=>'FRAIS FINANCIER'), ); return $tabRatio; } /** * Retourn les ratios à afficher pour le graphique * @return array */ function syntheseRatioGraph() { $tabRatioGraph = array( 0 => array('ratio'=>'r236', 'op' => 1000), 1 => array('ratio'=>'r235', 'op' => 1000), 2 => array('ratio'=>'r6', 'op' => 1000), 3 => array('ratio'=>'r146', 'op' => 1000) ); return $tabRatioGraph; } ?>