From 4fd1c3ae9453a543fdeb48e070103933205e2200 Mon Sep 17 00:00:00 2001 From: Michael RICOIS Date: Tue, 23 Nov 2010 17:18:37 +0000 Subject: [PATCH] =?UTF-8?q?Ajout=20m=C3=A9thode=20getRatios,=20issue=20#00?= =?UTF-8?q?00379?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/configs/WsInterne.ini | 4 +- library/WsScore/Types/InterneTypes.php | 38 +++- library/WsScore/WsInterne.php | 295 +++++++++++++------------ 3 files changed, 195 insertions(+), 142 deletions(-) diff --git a/application/configs/WsInterne.ini b/application/configs/WsInterne.ini index 9da8d9bc..82fb58e5 100644 --- a/application/configs/WsInterne.ini +++ b/application/configs/WsInterne.ini @@ -64,4 +64,6 @@ Type.62 = "JalCollecte" Type.63 = "GeoCodeReturn" Type.64 = "GeoCode" Type.65 = "ListeUtilisateursReturn" -Type.66 = "Utilisateur" \ No newline at end of file +Type.66 = "Utilisateur" +Type.67 = "RatiosReturn" +Type.68 = "RatiosResult" \ No newline at end of file diff --git a/library/WsScore/Types/InterneTypes.php b/library/WsScore/Types/InterneTypes.php index 0c66ece4..f1c68cfd 100644 --- a/library/WsScore/Types/InterneTypes.php +++ b/library/WsScore/Types/InterneTypes.php @@ -991,7 +991,6 @@ class ListeUtilisateursReturn public $error; /** @var Utilisateur[] */ public $result; - } class Utilisateur @@ -1013,3 +1012,40 @@ class Utilisateur /** @var string */ public $reference; } + +class RatiosReturn +{ + /** @var ErrorType */ + public $error; + /** @var RatiosResult */ + public $result; +} + +class RatiosResult +{ + /** @var string */ + public $Nom; + /** @var string */ + public $NafEnt; + /** @var string */ + public $NafEntLib; + /** @var string */ + public $FJ; + /** @var string */ + public $FJ_lib; + /** @var string */ + public $Siren; + /** @var string */ + public $NbEntNaf; + /** @var array */ + public $BilansInfos; + /** @var array */ + public $RatiosInfos; + /** @var array */ + public $RatiosEntrep; + /** @var array */ + public $RatiosEntrepEvol; + /** @var array */ + public $RatiosSecteur; +} + diff --git a/library/WsScore/WsInterne.php b/library/WsScore/WsInterne.php index 1d9ae67d..3a6ecc6a 100644 --- a/library/WsScore/WsInterne.php +++ b/library/WsScore/WsInterne.php @@ -3052,167 +3052,184 @@ if ($infoEnq['LitigeChoix']<>'non') } /** - * - * Enter description here ... - * @param unknown_type $siren - * @param unknown_type $page + * getRatios + * @param string $siren + * @param string $page + * @return RatiosReturn */ - protected function getRatios($siren, $page='ratios') { + public function getRatios($siren, $page='ratios') + { + //Authentification + if (!$this->checkAuth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $_SERVER['REMOTE_ADDR'])) + { + throw new SoapFault('900','Identifiant ou mot de passe incorrect !'); + exit; + } + //Initialisation + $error = new ErrorType(); $tabRatiosInfos=$tabRatiosSecteurs=$tabBilansR=$tabRatios2=$tabRatiosEvol=array(); - - global $tva, $tabFormules, $mBil, $tabBilan, $efftr; + $tabRet = array(); + //global $tva, $tabFormules, $mBil, $tabBilan, $efftr; debugLog('I',"Liste des Ratios demandée pour $siren",__LINE__,__FILE__, __FUNCTION__, __CLASS__); - $tabRet=array(); - if (strlen($siren)<>9) { + + if (strlen($siren)<>9) + { debugLog('W', "Siren $siren incorrect", __LINE__, __FILE__, __FUNCTION__, __CLASS__); - return array('error'=>array('errnum'=>102, 'errmsg'=>'Siren inexistant'), 'results'=>$tabRet); + $error->errnum =102; + $error->errmsg = 'Siren inexistant'; } - $siren=$siren*1; - if ($siren==0) { + elseif ($siren*1==0) + { debugLog('W', "Siren $siren inexistant", __LINE__, __FILE__, __FUNCTION__, __CLASS__); - return array('error'=>array('errnum'=>102, 'errmsg'=>'Siren inexistant'), 'result'=>$tabRet); + $error->errnum =102; + $error->errmsg = 'Siren inexistant'; } + else + { + debugLog('I',"Liste des Ratios demandée pour $siren avant getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + $iInsee = new MInsee(); + $tabIdentite = $iInsee->getIdentiteEntreprise($siren,0,0,false,false); + debugLog('I',"Liste des Ratios demandée pour $siren après getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + $naf=$tabIdentite['NafEnt']; + $nafLib=$tabIdentite['NafEntLib']; + $efftr=$tabIdentite['Effectif']*1; + $fj=$tabIdentite['FJ']; - debugLog('I',"Liste des Ratios demandée pour $siren avant getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + $mBil=new MBilans($siren); + $tabBilans=$mBil->listeBilans(true); + //@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getRatios sur $siren", print_r($tabBilans, true)); - $tabIdentite=$this->iInsee->getIdentiteEntreprise($siren,0,0,false,false); - debugLog('I',"Liste des Ratios demandée pour $siren après getIdentiteEntreprise",__LINE__,__FILE__, __FUNCTION__, __CLASS__); - $naf=$tabIdentite['NafEnt']; - $nafLib=$tabIdentite['NafEntLib']; - $efftr=$tabIdentite['Effectif']*1; - $fj=$tabIdentite['FJ']; + $nbBilans=count($tabBilans); + $tabBilan=$tabBil=array(); + if ($nbBilans>0) + $tabRatios=@calculRatios($tabBilans, $tabIdentite, true); - $mBil=new MBilans($siren); - $tabBilans=$mBil->listeBilans(true); - //@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "getRatios sur $siren", print_r($tabBilans, true)); - - $nbBilans=count($tabBilans); - $tabBilan=$tabBil=array(); - if ($nbBilans>0) - $tabRatios=@calculRatios($tabBilans, $tabIdentite, true); - - $nbRatios=count($tabRatios); - debugLog('I',"Liste des Ratios demandée pour $siren après calculRatios ($nbRatios)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + $nbRatios=count($tabRatios); + debugLog('I',"Liste des Ratios demandée pour $siren après calculRatios ($nbRatios)",__LINE__,__FILE__, __FUNCTION__, __CLASS__); - /** Tableau d'infos sur les formules **/ - $tabBorneMin=$tabBorneMax=array(); - foreach ($tabFormules as $formule) { - $id=$formule['id']*1; - $libelle=$formule['libelle']; - $unite=$formule['unite']; - $commentaires=$formule['commentaires']; - // Utilisation d'un index texte à cause du webservice - $tabRatiosInfos['r'.$id]=array( 'libelle' => prepareString($formule['libelle']), - 'unite' => $formule['unite'], - //'borneMin' => $formule['borneMin'], - //'borneMax' => $formule['borneMax'], - 'commentaires' => prepareString($formule['commentaires']), - ); - $tabBorneMin[$id]=$formule['borneMin']; - $tabBorneMax[$id]=$formule['borneMax']; - } + /** Tableau d'infos sur les formules **/ + $tabBorneMin=$tabBorneMax=array(); + foreach ($tabFormules as $formule) { + $id=$formule['id']*1; + $libelle=$formule['libelle']; + $unite=$formule['unite']; + $commentaires=$formule['commentaires']; + // Utilisation d'un index texte à cause du webservice + $tabRatiosInfos['r'.$id]=array( 'libelle' => prepareString($formule['libelle']), + 'unite' => $formule['unite'], + //'borneMin' => $formule['borneMin'], + //'borneMax' => $formule['borneMax'], + 'commentaires' => prepareString($formule['commentaires']), + ); + $tabBorneMin[$id]=$formule['borneMin']; + $tabBorneMax[$id]=$formule['borneMax']; + } - /** Tanleau des années de bilans **/ - $tabAnnees=array(); - // Tableau d'infos sur les bilans - foreach ($tabRatios as $i=>$R) { - $tabBilansR[$i]=array( 'dateCloture' => $tabBilan[$i]['DATE_CLOTURE'], - 'duree' => $tabBilan[$i]['DUREE_MOIS'], - 'devise' => $tabBilan[$i]['MONNAIE'], - 'typeBilan' => $tabBilan[$i]['CONSOLIDE'], - 'unite' => 'U', - ); - if (substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900) - $tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); - } - foreach ($tabRatios as $i=>$R) { - // Utilisation d'un index texte à cause du webservice - foreach ($R as $Ridx=>$Rmont) { - if ($Rmont<>'NS') { - if ($tabBorneMin[$Ridx]<>'' && $Rmont<$tabBorneMin[$Ridx]) - $Rmont='<'.$tabBorneMin[$Ridx]; - elseif ($tabBorneMax[$Ridx]<>'' && $Rmont>$tabBorneMax[$Ridx]) - $Rmont='>'.$tabBorneMax[$Ridx]; + /** Tanleau des années de bilans **/ + $tabAnnees=array(); + // Tableau d'infos sur les bilans + foreach ($tabRatios as $i=>$R) { + $tabBilansR[$i]=array( 'dateCloture' => $tabBilan[$i]['DATE_CLOTURE'], + 'duree' => $tabBilan[$i]['DUREE_MOIS'], + 'devise' => $tabBilan[$i]['MONNAIE'], + 'typeBilan' => $tabBilan[$i]['CONSOLIDE'], + 'unite' => 'U', + ); + if (substr($tabBilan[$i]['DATE_CLOTURE'],0,4)>1900) + $tabAnnees[$i]=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); + } + foreach ($tabRatios as $i=>$R) { + // Utilisation d'un index texte à cause du webservice + foreach ($R as $Ridx=>$Rmont) { + if ($Rmont<>'NS') { + if ($tabBorneMin[$Ridx]<>'' && $Rmont<$tabBorneMin[$Ridx]) + $Rmont='<'.$tabBorneMin[$Ridx]; + elseif ($tabBorneMax[$Ridx]<>'' && $Rmont>$tabBorneMax[$Ridx]) + $Rmont='>'.$tabBorneMax[$Ridx]; + } + if (substr($Rmont,0,1)=='N' || substr($Rmont,0,1)=='<' || substr($Rmont,0,1)=='>') + $tabRatios2[$i]['r'.$Ridx]=$Rmont; + else + $tabRatios2[$i]['r'.$Ridx]=round($Rmont,2); + + if ( ($tabBilan[$i]['CONSOLIDE']=='S'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='S'||($tabBilan[$i+1]['CONSOLIDE']=='N'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) + || ($tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='N'||($tabBilan[$i+1]['CONSOLIDE']=='S'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) + ) + $Rmont=(($R[$Ridx]-$tabRatios[$i+1][$Ridx])*100)/abs($tabRatios[$i+1][$Ridx]); + elseif ( ($tabBilan[$i]['CONSOLIDE']=='S'&&isset($tabRatios[$i+1])&&($tabBilan[$i+2]['CONSOLIDE']=='S'||($tabBilan[$i+2]['CONSOLIDE']=='N'&&$tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) + || ($tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+2]['CONSOLIDE']=='N'||($tabBilan[$i+2]['CONSOLIDE']=='S'&&$tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) + ) + $Rmont=(($R[$Ridx]-$tabRatios[$i+2][$Ridx])*100)/abs($tabRatios[$i+2][$Ridx]); + else + $Rmont='NS'; + + if ($Rmont=='NS' || $Rmont<-800 || $Rmont>800) + $tabRatiosEvol[$i]['r'.$Ridx]='NS'; + else + $tabRatiosEvol[$i]['r'.$Ridx]=@number_format($Rmont,2,',',' '); + // debugLog('I',"Liste des Ratios demandée pour $siren ratio $i, $Ridx=$Rmont",__LINE__,__FILE__, __FUNCTION__, __CLASS__); } - if (substr($Rmont,0,1)=='N' || substr($Rmont,0,1)=='<' || substr($Rmont,0,1)=='>') - $tabRatios2[$i]['r'.$Ridx]=$Rmont; - else - $tabRatios2[$i]['r'.$Ridx]=round($Rmont,2); - - if ( ($tabBilan[$i]['CONSOLIDE']=='S'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='S'||($tabBilan[$i+1]['CONSOLIDE']=='N'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) - || ($tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+1]['CONSOLIDE']=='N'||($tabBilan[$i+1]['CONSOLIDE']=='S'&&$tabBilan[$i+1]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) - ) - $Rmont=(($R[$Ridx]-$tabRatios[$i+1][$Ridx])*100)/abs($tabRatios[$i+1][$Ridx]); - elseif ( ($tabBilan[$i]['CONSOLIDE']=='S'&&isset($tabRatios[$i+1])&&($tabBilan[$i+2]['CONSOLIDE']=='S'||($tabBilan[$i+2]['CONSOLIDE']=='N'&&$tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) - || ($tabBilan[$i]['CONSOLIDE']=='N'&&isset($tabRatios[$i+1])&&($tabBilan[$i+2]['CONSOLIDE']=='N'||($tabBilan[$i+2]['CONSOLIDE']=='S'&&$tabBilan[$i+2]['DATE_CLOTURE']<>$tabBilan[$i]['DATE_CLOTURE']))) - ) - $Rmont=(($R[$Ridx]-$tabRatios[$i+2][$Ridx])*100)/abs($tabRatios[$i+2][$Ridx]); - else - $Rmont='NS'; - - if ($Rmont=='NS' || $Rmont<-800 || $Rmont>800) - $tabRatiosEvol[$i]['r'.$Ridx]='NS'; - else - $tabRatiosEvol[$i]['r'.$Ridx]=@number_format($Rmont,2,',',' '); - // debugLog('I',"Liste des Ratios demandée pour $siren ratio $i, $Ridx=$Rmont",__LINE__,__FILE__, __FUNCTION__, __CLASS__); } - } - debugLog('I',"Liste des Ratios demandée pour $siren après EVOLUTION",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + debugLog('I',"Liste des Ratios demandée pour $siren après EVOLUTION",__LINE__,__FILE__, __FUNCTION__, __CLASS__); - /** Tableau des ratios secteurs */ - $tabRatiosSecteurs=array(); - if (strlen($naf)>4) $strNaf=" AND naf5='$naf' "; - else $strNaf=" AND naf4='$naf' "; - $strAnnees=implode(',', $tabAnnees); - if (count($tabAnnees)>0) { - $iDb=new WDB('jo'); - $tabTmp=$iDb->select('ratios_secteurs', 'annee, naf5, naf4, id, (montant/nombre) AS ratio, nombre', "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC", true, MYSQL_ASSOC); - $nbRatiosSec=0; - $anneePre=$tabTmp[0]['annee']; - $iAn=0; - foreach ($tabTmp as $tabTmp2) { - if ($anneePre<>$tabTmp2['annee']) $iAn++; - $Ridx=$tabTmp2['id']; - if ($tabTmp2['nombre']>$nbRatiosSec) $nbRatiosSec=$tabTmp2['nombre']; - if ($tabRatiosInfos['r'.$Ridx]['unite']=='EUR') $montant=round($tabTmp2['ratio']*1000); - else $montant=round($tabTmp2['ratio']); + /** Tableau des ratios secteurs */ + $tabRatiosSecteurs=array(); + if (strlen($naf)>4) $strNaf=" AND naf5='$naf' "; + else $strNaf=" AND naf4='$naf' "; + $strAnnees=implode(',', $tabAnnees); + if (count($tabAnnees)>0) { + $iDb=new WDB('jo'); + $tabTmp=$iDb->select('ratios_secteurs', 'annee, naf5, naf4, id, (montant/nombre) AS ratio, nombre', "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC", true, MYSQL_ASSOC); + $nbRatiosSec=0; + $anneePre=$tabTmp[0]['annee']; + $iAn=0; + foreach ($tabTmp as $tabTmp2) { + if ($anneePre<>$tabTmp2['annee']) $iAn++; + $Ridx=$tabTmp2['id']; + if ($tabTmp2['nombre']>$nbRatiosSec) $nbRatiosSec=$tabTmp2['nombre']; + if ($tabRatiosInfos['r'.$Ridx]['unite']=='EUR') $montant=round($tabTmp2['ratio']*1000); + else $montant=round($tabTmp2['ratio']); - if ($tabBorneMin[$Ridx]<>'' && $montant<$tabBorneMin[$Ridx]) - $montant='<'.$tabBorneMin[$Ridx]; - elseif ($tabBorneMax[$Ridx]<>'' && $montant>$tabBorneMax[$Ridx]) - $montant='>'.$tabBorneMax[$Ridx]; + if ($tabBorneMin[$Ridx]<>'' && $montant<$tabBorneMin[$Ridx]) + $montant='<'.$tabBorneMin[$Ridx]; + elseif ($tabBorneMax[$Ridx]<>'' && $montant>$tabBorneMax[$Ridx]) + $montant='>'.$tabBorneMax[$Ridx]; - if (substr($montant,0,1)=='N' || substr($montant,0,1)=='<' || substr($montant,0,1)=='>') - $tabRatiosSecteurs[$iAn]['r'.$Ridx]=$montant; - else - $tabRatiosSecteurs[$iAn]['r'.$Ridx]=round($montant,2); + if (substr($montant,0,1)=='N' || substr($montant,0,1)=='<' || substr($montant,0,1)=='>') + $tabRatiosSecteurs[$iAn]['r'.$Ridx]=$montant; + else + $tabRatiosSecteurs[$iAn]['r'.$Ridx]=round($montant,2); - // $tabRatiosSecteurs[$iAn]['r'.$Ridx]=$montant; - $anneePre=$tabTmp2['annee']; - //$tabRatiosSecteurs=array('titi'); + // $tabRatiosSecteurs[$iAn]['r'.$Ridx]=$montant; + $anneePre=$tabTmp2['annee']; + //$tabRatiosSecteurs=array('titi'); + } } - } - //$tabRatiosSecteurs=array(count($tabTmp), "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC"); + //$tabRatiosSecteurs=array(count($tabTmp), "1 $strNaf AND annee IN ($strAnnees) ORDER BY annee DESC, id ASC"); - $tabRet=array( 'Nom' => prepareString($tabIdentite['Nom']), - 'NafEnt' => $tabIdentite['NafEnt'], - 'NafEntLib' => prepareString($tabIdentite['NafEntLib']), - 'FJ' => $fj, - 'FJ_lib' => prepareString($tabIdentite['FJ_lib']), - 'Siren' => $siren, - 'NbEntNaf' => $nbRatiosSec, - 'BilansInfos' => $tabBilansR, - 'RatiosInfos' => $tabRatiosInfos, - 'RatiosEntrep' => $tabRatios2, - 'RatiosEntrepEvol' => $tabRatiosEvol, - 'RatiosSecteur' => $tabRatiosSecteurs, - ); - debugLog('I',"Liste des Ratios demandée pour $siren RETURN",__LINE__,__FILE__, __FUNCTION__, __CLASS__); - wsLog($page, $siren); - return array('error'=>array('errnum'=>0, 'errmsg'=>''), 'result'=>$tabRet); + $result = new RatiosResult(); + $result->Nom = $tabIdentite['Nom']; + $result->NafEnt = $tabIdentite['NafEnt']; + $result->NafEntLib = $tabIdentite['NafEntLib']; + $result->FJ = $fj; + $result->FJ_lib = $tabIdentite['FJ_lib']; + $result->Siren = $siren; + $result->NbEntNaf = $nbRatiosSec; + $result->BilansInfos = $tabBilansR; + $result->RatiosInfos = $tabRatiosInfos; + $result->RatiosEntrep = $tabRatios2; + $result->RatiosEntrepEvol = $tabRatiosEvol; + $result->RatiosSecteur = $tabRatiosSecteurs; + debugLog('I',"Liste des Ratios demandée pour $siren RETURN",__LINE__,__FILE__, __FUNCTION__, __CLASS__); + wsLog($page, $siren); + $output = new RatiosReturn(); + $output->error = $error; + $output->result = $result; + return $output; + } } /** @@ -3364,8 +3381,6 @@ if ($infoEnq['LitigeChoix']<>'non') ); $k++; } - //@sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Debug", print_r($tabRet,true)) ; - return array( 'criteres'=>array('recherche'=>$recherche, 'annee'=>$annee), 'nbReponses'=>count($tabRet),