433 lines
12 KiB
PHP
433 lines
12 KiB
PHP
<?php
|
|
/**
|
|
* Retourne le résultat du webservice.
|
|
* @param string $nRatio
|
|
* Le n° de ratio.
|
|
* @param string $type
|
|
* Le type de ratio demandé.
|
|
* @return array
|
|
* Retourne le tableau structuré.
|
|
*/
|
|
function getRatios($siren, $type){}
|
|
|
|
/**
|
|
* Retourne le tableau pour l'affichage des graphiques d'évolution.
|
|
* @param string $nRatio
|
|
* Le n° de ratio.
|
|
* @return array
|
|
* Retourne le tableau structuré.
|
|
*/
|
|
function dGraph($nRatio){
|
|
global $bilansInfos;
|
|
global $ratiosSecteur;
|
|
global $ratiosEntrep;
|
|
global $ratiosInfos;
|
|
$evol = array();
|
|
$nbrAnnees=count($bilansInfos)-1;
|
|
$i=0;
|
|
foreach($bilansInfos as $dateCloture){
|
|
if(isset($bilansInfos[$nbrAnnees-$i]['dateCloture'])){
|
|
$div = 1;
|
|
$ratioE = $ratiosEntrep[$nbrAnnees-$i][$nRatio];
|
|
$ratioS = $ratiosSecteur[$nbrAnnees-$i][$nRatio];
|
|
if ( ($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratioE)/1000)>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 = '<img src="./img/ratios_bon.png" />';
|
|
}elseif( ($ratioS-($ratioS*$ecart))<$ratioE && ($ratioS+($ratioS*$ecart))>$ratioE){
|
|
$return = '-';
|
|
}else{
|
|
$return = '<img src="./img/ratios_mauvais.png" />';
|
|
}
|
|
}elseif($compare=='<'){
|
|
if($ratioE < $ratioS){
|
|
$return = '<img src="./img/ratios_bon.png" />';
|
|
}elseif( ($ratioS-($ratioS*$ecart))<$ratioE && ($ratioS+($ratioS*$ecart))>$ratioE){
|
|
$return = '-';
|
|
}else{
|
|
$return = '<img src="./img/ratios_mauvais.png" />';
|
|
}
|
|
}
|
|
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 <br/>
|
|
* @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;
|
|
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, $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))
|
|
{
|
|
array_splice($bilansInfos, $index, 1);
|
|
array_splice($ratiosEntrep, $index, 1);
|
|
array_splice($ratiosEntrepEvol, $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 )
|
|
{
|
|
array_splice($bilansInfos, $index, 1);
|
|
array_splice($ratiosEntrep, $index, 1);
|
|
array_splice($ratiosEntrepEvol, $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, $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;
|
|
}
|
|
|
|
|
|
?>
|