extranet/includes/ratios/functions.php
2009-10-19 12:34:08 +00:00

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&euro;';
}elseif (($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratio)/1000)<0)) {
$return.= number_format($ratio, 0, '', ' ').' &euro;';
}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&euro;';
}elseif (($ratiosInfos[$nRatio]['unite']=='EUR') && ((abs($ratio)/1000)<0)) {
$return.= number_format($ratio, 0, '', ' ').' &euro;';
}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;
}
?>