getRequest(); $this->siret = $request->getParam('siret'); $this->id = $request->getParam('id', 0); require_once 'Scores/WsScores.php'; require_once 'Scores/IdentiteEntreprise.php'; } public function indexAction() { $this->forward('entreprise', 'recherche'); } /** * Affichage d'une reglette représentant le score */ public function printscoresAction() { $this->_helper->layout()->disableLayout(); $request = $this->getRequest(); $score = strtolower($request->getParam('score')); if( $score == 'indiscore' ){ $user = new Scores_Utilisateur(); switch($user->getTypeScore()) { case '20': $score.='20'; break; case '100': default: $score.='100'; break; } } $note = $request->getParam('note'); $bornes = array( 'conanh' => array( 'min' => -4.5 , 'max' => 16 ), 'afdcc2' => array( 'min' => 0 , 'max' => 5 ), 'afdcc1' => array( 'min' => -10 , 'max' => 10 ), 'z' => array( 'min' => -3 , 'max' => 3 ), 'indiscore100' => array( 'min' => 0 , 'max' => 100 ), 'indiscore20' => array( 'min' => 0 , 'max' => 20 ), ); $note = round(($note - $bornes[$score]['min'])*100/($bornes[$score]['max'] - $bornes[$score]['min'])); if($note < 0) $note = 0; if($note > 100) $note = 100; $this->view->assign('note', $note); $this->view->assign('min', $bornes[$score]['min']); $this->view->assign('max', $bornes[$score]['max']); } /** * Historique des scores */ public function scoreshistoAction() { $this->view->headLink() ->appendStylesheet('/libs/tablesorter/themes/blue/style.css', 'all'); $this->view->headScript() ->appendFile('/libs/tablesorter/jquery.tablesorter.js', 'text/javascript'); $sessionEntreprise = new Scores_Session_Entreprise($this->siret, $this->id); $siren = substr($this->siret,0,9); $types = array ( 'indiScore' => 'IndiScore', 'scoreDir' => 'Dirigeance', 'scoreConf' => 'Conformité', 'scoreZ' => 'Score Z', 'scoreCH' => 'Conan & Holder', 'scoreAfdcc1' => 'Afdcc1', 'scoreAfdcc2' => 'Afdcc2', 'scoreAltman' => 'Altman', 'scoreCCF' => 'CCF', ); $bornes = array( 'indiScore' => array('min' => 0, 'max' => 20, 'rouge' => 7, 'orange' => 10), 'scoreDir' => array('min' => 0, 'max' => 100, 'rouge' => 45, 'orange' => 56), 'scoreConf' => array('min' => 0, 'max' => 100, 'rouge' => 45, 'orange' => 56), 'scoreZ' => array('min' => -3, 'max' => 3, 'rouge' => -0.25, 'orange' => 0.125), 'scoreCH' => array('min' => -4.5, 'max' => 16, 'rouge' => 3.75, 'orange' => 10), 'scoreAfdcc1' => array('min' => -7, 'max' => 7, 'rouge' => 0, 'orange' => 1), 'scoreAfdcc2' => array('min' => -3, 'max' => 2, 'rouge' => -1, 'orange' => 0.5), 'scoreAltman' => array('min' => -2, 'max' => 8, 'rouge' => 0, 'orange' => 2.7), 'scoreCCF' => array('min' => 500, 'max' => 5000, 'rouge' => 2160, 'orange' => 3450 ), ); $request = $this->getRequest(); $type = $request->getParam('type', 'indiScore'); $user = new Scores_Utilisateur(); $this->view->headTitle()->prepend('Historique indiScore'); $this->view->headTitle()->prepend('Siret '.$this->siret); $ws = new WsScores(); $histoScores = $ws->getScoresHisto($this->siret, $type); if ( $histoScores->nbReponses>1 ) { $data = array(); foreach ($histoScores->result->item as $item) { $d = array( 'date' => $item->date, 'value' => $item->value, 'encours' =>$item->encours, ); $data['data'][] = $d; } //Make the graph - Ready to create a class for this char require_once 'Vendors/ChartDirector/phpchartdir.php'; require_once 'Scores/Cache.php'; $c = Zend_Registry::get('config'); $path = $c->profil->path->pages . '/imgcache/'; $file = 'indiscorehisto-'.$this->siret.'-'.$this->id.'-'.$type.'.png'; $cache = new Cache(); $return = null; if( $cache->exist($path.$file) ){ $return = $file; } else { if( count($data)<1 ){ $return = null; } else { $labelsX = array(); $dataX = array(); $encours = array(); foreach($data['data'] as $value){ $dataX[] = $value['value']; $encours[] = $value['encours']; $date = new Zend_Date($value['date'], 'yyyy-MM-dd'); $labelsX[] = chartTime($date->toString('yyyy'), $date->toString('MM'), $date->toString('dd')); } $c = new XYChart(600, 300); $c->setPlotArea(50, 10, $c->getWidth() - 60, $c->getHeight() - 60, 0xFFFFFF, -1, 0xC0C0C0, $c->dashLineColor(0x808080, DotLine), -1); $c->xAxis->setTitle($this->view->translate("Année")); $c->xAxis->setColors(0x777777, 0x444444, 0x777777); $c->xAxis->setWidth(2); $c->yAxis->setTitle($this->view->translate("Score")); $c->yAxis->setColors(0x777777, 0x444444, 0x777777); $c->yAxis->setWidth(2); $c->yAxis->addZone(abs($bornes[$type]['min'])*(-5), $bornes[$type]['rouge'], 0xFFE2E2); $c->yAxis->addZone($bornes[$type]['rouge'], $bornes[$type]['orange'], 0xFFF2E2); $c->yAxis->addZone($bornes[$type]['orange'], abs($bornes[$type]['max'])*5, 0xE2FFE2); // If real value is not between min max scores, enlarge Y of graphic and mark limits $maxY = (max($dataX) >= $bornes[$type]['max']) ? max($dataX)*1.1 : $bornes[$type]['max']; $minY = (min($dataX) <= $bornes[$type]['min']) ? min($dataX)*1.1 : $bornes[$type]['min']; $c->yAxis->setLinearScale($minY, $maxY); $textBox = $c->addText(550, 15, $types[$type], "arialbi.ttf", 11, 0xAAAAAA); $textBox->setAlignment(TopRight); $layer = $c->addSplineLayer(); $layer->setXData($labelsX); $layer->setLineWidth(1); $layer->addExtraField($encours); $dataSet = $layer->addDataSet($dataX, 0x0000FF); $dataSet->setDataSymbol(CircleSymbol, 4, 0x5555FF); if( $c->makeChart($path.$file ) === true){ $return = $file; $graphMap = $c->getHTMLImageMap("", "", "title='{x|dd/mm/yyyy}\nScore: {value}\nEncours: {field0} K€' style='cursor:pointer;'"); } else { $return = false; } } } $this->view->assign('graphMap', $graphMap); $this->view->assign('graph', $return); //Assign vars $this->view->assign('scores', $histoScores->result->item); $this->view->assign('typeTxt', $histoScores->type); $this->view->assign('type', $type); $this->view->assign('bornes', $bornes); } $this->view->assign('siret', $this->siret); $this->view->assign('id', $this->id); $this->view->assign('siren', $siren); $this->view->assign('raisonSociale', $sessionEntreprise->getRaisonSociale()); $this->view->assign('types', $types); $this->view->assign('exportObjet', $histoScores); } /** * IndiScore */ public function indiscoreAction() { $user = new Scores_Utilisateur(); if(!$user->checkPerm('INDISCORE') && !$user->checkPerm('INDISCOREP')) $this->forward('perms', 'error'); $this->view->assign('edition', $user->checkModeEdition()); $request = $this->getRequest(); $autrePage = $request->getParam('apage'); // --- Récupération des informations if ( empty($autrePage) ) { $this->view->headTitle()->prepend('IndiScore'); $this->view->headTitle()->prepend('Siret '.$this->siret); $plus = false; if ($user->checkPerm('indiscorep')){ $plus = true; } $ref = $request->getParam('ref', ''); $encours = $request->getParam('encours', 0); $email = $request->getParam('email', ''); $ws = new WsScores(); $infos = $ws->getIndiScore(substr($this->siret, 0,9), 0, 1, $plus, $ref, $encours, $email); if ($infos === false) $this->forward('soap', 'error'); } else { $infos = $this->getRequest()->getParam('infos'); } $this->view->assign('siret', $this->siret); $this->view->assign('typeScore', $user->getTypeScore()); $this->view->assign('indiscore', $infos); $this->view->assign('AutrePage', $autrePage); $this->view->assign('exportObjet', $infos); $this->view->assign('aviscredit', $user->checkPerm('aviscredit')); $this->view->assign('surveillance', $user->checkPerm('survscore')); } /** * Rapport de synthese */ public function indiscore2Action() { $this->view->headScript()->appendFile('/themes/default/scripts/finance.js', 'text/javascript'); $this->view->headTitle()->prepend("Rapport de synthèse"); $this->view->headTitle()->prepend("Siret ".$this->siret); $user = new Scores_Utilisateur(); if(!$user->checkPerm('INDISCORE2') && !$user->checkPerm('INDISCORE2P')) $this->forward('perms', 'error'); $siren = substr($this->siret,0,9); //@todo : transformer le webservice pour ne faire qu'une seule requete $ws = new WsScores(); $entreprise = new Scores_Session_Entreprise($this->siret, $this->id); $identite = $ws->getIdentite($siren); $indiscore = $ws->getIndiScore($siren); $infos = $ws->getRatios($siren, 'indiscore2'); $score = array(); $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'), 'r18' => array('total'=>'r22', 'total_info'=>'% bilan', 'op' => 1000, 'titre'=>'FONDS PROPRES'), 'r231' => array('total'=>'r22', 'total_info'=>'% bilan', 'op' => 1000, 'titre'=>'FONDS DE ROULEMENT'), 'r232' => array('total'=>'r22', 'total_info'=>'% bilan', 'op' => 1000, 'titre'=>'BESOIN EN FONDS DE ROULEMENT'), 'r249' => array('total'=>'', 'total_info'=>'', 'op' => 1000, 'titre'=>'TRESORERIE NETTE'), 'r20' => array('total'=>'r5', 'total_info'=>'% ca', 'op' => 1000, 'titre'=>'FRAIS FINANCIER'), ); //Formattage des données $typeBilan = 'N'; $ratiosData = new Scores_Finance_Ratios_Data($infos); $nbBilanN = $ratiosData->getNbBilan('N'); $nbBilanC = $ratiosData->getNbBilan('C'); if ($nbBilanN!=0) { foreach($tabRatio as $idRatio => $valRatio) { $tabRatio[$idRatio]['comment'] = $ratiosData->wrapComment($idRatio); } $this->view->assign('tabRatio', $tabRatio); $infosAnnee = $ratiosData->getBilansInfo($typeBilan); $annees = array_keys($infosAnnee); //On prend les 3 derniers bilans pour l'affichage $nbMaxBilan = 3; rsort($annees); $annees = array_slice($annees, 0, $nbMaxBilan); sort($annees); $tabResult = array(); foreach($annees as $annee) { $data = array(); $dataEvol = array(); //Formatter les données foreach($tabRatio as $idRatio => $valRatio) { $data[$idRatio] = $ratiosData->dRatio($typeBilan, $annee, $idRatio); $dataTotal[$idRatio] = $ratiosData->dTotal($typeBilan, $annee, $idRatio, $valRatio['total']); $dInfo[$idRatio] = $valRatio['total_info']; } $date = new Zend_Date($annee, 'yyyyMMdd'); $tabResult[] = array( 'dateCloture' => $date->toString('dd/MM/yyyy'), 'duree' => $infosAnnee[$annee]->duree.' Mois', 'ratio' => $data, 'total' => $dataTotal, 'info' => $dInfo, ); } $this->view->assign('tabResult', $tabResult); } $this->view->assign('tabRatio', $tabRatio); /* Correction pour indiscore seule $indiscore->Siege; $indiscore->SiretSiege; $indiscore->NumRC; */ $indiscore->SiretSiege = $identite->SiretSiege; $identite = new IdentiteEntreprise($identite); //Définition des blocks $blocks = array( 'Siret', 'SiretSiege', 'NumRC', 'Actif', 'RaisonSociale', 'FormeJuridique', 'DateImmat', 'DateCreaEt', 'Adresse', 'ActiviteEn', 'Naf4', 'OrigineFond', 'TypeExploitation', 'Saisonnalite', 'Capital', 'ChiffreAffaire', ); $dBlock = array(); foreach ($blocks as $item) { $display = array( 'label' => method_exists($identite, 'get'.$item.'Label') ? $identite->{'get'.$item.'Label'}() : '', 'texte' => method_exists($identite, 'get'.$item.'Texte') ? $identite->{'get'.$item.'Texte'}() : '', 'titre' => method_exists($identite, 'get'.$item.'Titre') ? $identite->{'get'.$item.'Titre'}() : '', ); $dBlock[$item] = $display; } $this->view->assign('dBlock', $dBlock); $dateRadiation = ''; if(isset($indiscore->DateRadiation) && $indiscore->DateRadiation!='' && $indiscore->DateRadiation!='0000-00-00') { $date = new Zend_Date(str_replace('-','',$indiscore->DateRadiation), 'yyyyMMdd'); $this->view->assign('dateRadiation', $date->toString('dd/MM/yyyy')); } foreach($indiscore->scores as $name => $sc){ if($name == 'ConanH') $score[$name] = array($sc, 'Score Conan Holder'); if($name == 'Afdcc1') $score[$name] = array($sc, 'Score Afdcc 1'); if($name == 'Afdcc2') $score[$name] = array($sc, 'Score Afdcc 2'); if($name == 'Z') $score[$name] = array($sc, 'Score Z'); } $typeScore = $user->getTypeScore(); switch($typeScore) { case '20': $maxIndiscore = $typeScore; $score['Indiscore'] = array($indiscore->Indiscore20, 'IndiScore'); break; case '100': default: $maxIndiscore = empty($typeScore)? '100' : $typeScore; $score['Indiscore'] = array($indiscore->Indiscore, 'IndiScore'); break; } $this->view->assign('siret', $this->siret); $this->view->assign('id', $this->id); $this->view->assign('siren', $siren); $this->view->assign('encours', $indiscore->encours); $this->view->assign('TendanceIndiscore', $indiscore->TendanceIndiscore); $this->view->assign('SituationJuridique', $indiscore->SituationJuridique); $this->view->assign('paiement', $indiscore->infoPaiement); $this->view->assign('scores', $score); $this->view->assign('bilanReference', $bilanReference); } /** * Rapport complet */ public function indiscore3Action() { $this->view->headScript()->appendFile('/themes/default/scripts/evaluation.js', 'text/javascript'); $this->view->headTitle()->prepend("Rapport complet"); $this->view->headTitle()->prepend("Siret ".$this->siret); $user = new Scores_Utilisateur(); if(!$user->checkPerm('INDISCORE3') && !$user->checkPerm('INDISCORE3P')) $this->forward('perms', 'error'); // Lien pour le rapport personnalisé if ($user->getIdClient() == '110' || $user->checkModeEdition()) { $this->view->assign('customRapport', $this->view->url(array( 'controller'=>'evaluation', 'action'=>'customindiscore3', 'siret'=>$this->siret, 'id'=>$this->id) ), 'default', true); } $sessionEntreprise = new Scores_Session_Entreprise($this->siret, $this->id); $ws = new WsScores(); $siren = substr($this->siret,0,9); $plus = false; if ($user->checkPerm('indiscore3p')){ $plus = true; } $request = $this->getRequest(); $ref = $request->getParam('ref', ''); $encours = $request->getParam('encours', 0); $email = $request->getParam('email', ''); $infos = $ws->getRapport($siren, 3, 0, $plus, $ref, $encours, $email); Zend_Registry::get('firebug')->info($infos); if ($infos === false) { $this->forward('soap', 'error'); } $this->view->assign('Identite', $infos->Identite); $this->view->assign('Dirigeants', $infos->Dirigeants); $this->view->assign('Liens', $infos->Liens); $this->view->assign('Annonces', $infos->Annonces); $this->view->assign('Ratios', $infos->Ratios); $this->view->assign('Indiscore', $infos->Indiscore); require_once 'Scores/RapportComment.php'; $rapportComment = new RapportComment($siren, $this->id, $infos->Indiscore->tabCommentaires->item, $infos->Ratios->RatiosInfos, $infos->Ratios->BilansInfos, $infos->Ratios->RatiosSecteur, $infos->Indiscore->tabVariables ); $this->view->assign('comment',$rapportComment->out()); $this->view->assign('siret', $this->siret); $this->view->assign('id', $this->id); $this->view->assign('siren', $siren); $this->view->assign('raisonSociale', $sessionEntreprise->getRaisonSociale()); $this->view->assign('exportObjet', $infos); } /** * Génération de rapport personnalisé * @todo : à améliorer */ public function customindiscore3Action() { $this->_helper->layout()->disableLayout(); $request = $this->getRequest(); $upload = $request->getParam('upload', null); $siren = substr($this->siret, 0, 9); $user = new Scores_Utilisateur(); if (empty($upload)){ $adresse = array(); if ($user->checkModeEdition() || $user->getIdClient()==110) { $adresse[] = 'Order to Cash'; $adresse[] = '6, rue Euryale Dehaynin '; $adresse[] = '75019 PARIS'; $color1 = '#DFDB00'; $color2 = '#EFED9A'; $background = "background-image:url('/themes/default/images/customrapport/logo_ordertocash.jpg');background-repeat:no-repeat;background-position:center"; } else { $adresse[] = 'Financement Entreprise'; $adresse[] = '16 RUE SENAC DE MEILHAN'; $adresse[] = '17000 LA ROCHELLE'; $color1 = '#6699FF'; $color2 = '##66CCFF'; $background = null; } $this->view->assign('adresse', $adresse); $this->view->assign('color1', $color1); $this->view->assign('color2', $color2); $this->view->assign('background', $background); $this->view->assign('siret', $this->siret); $this->view->assign('id', $this->id); $sessionEntreprise = new Scores_Session_Entreprise($this->siret, $this->id); $this->view->assign('rs', $sessionEntreprise->getRaisonSociale()); } else { $this->_helper->viewRenderer->setNoRender(true); $couleurh1 = $request->getParam('couleurh1', null); $couleurh2 = $request->getParam('couleurh2', null); $texth1 = $request->getParam('texth1', null); $texth2 = $request->getParam('texth2', null); $societe_name = $request->getParam('societe_name', null); $adresse = $request->getParam('adresse', null); $logo_background = $request->getParam('logo_background', null); $siren = substr($this->siret, 0, 9); if ($this->id!=0){ $file = 'evaluation-indiscore3-'.$this->siret.'-'.$this->id.'.html'; } else { $file = 'evaluation-indiscore3-'.$this->siret.'.html'; } $c = Zend_Registry::get('config'); $path = $c->profil->path->pages; if (file_exists($path.'/'.$file)) { $doc = new DOMDocument(); $doc->preserveWhiteSpace = true; @$doc->loadHTMLFile($path.'/'.$file); //Générer style particulier pour le rapport $style.= 'body {background-color:#ffffff;} '; $style.= '#footer {display:none;} '; $style.= '#customRapport {display:none;} '; $style.= '.notvisible{display:none;} '; $style.= '#center h1 {background-color:'.$couleurh1.';color:'.$texth1.';border:1px solid;} '; /*if($logo_background) { $style.= '#center {background-image:url(./themes/default/images/customrapport/logo_ordertocash_background.jpg);background-repeat:no-repeat;background-position:center;} '; }*/ $style.= '#center h2 {background-color:'.$couleurh2.';color:'.$texth2.'} '; $style.= 'p#rsynthese {font-size:14px;font-weight:bold;} '; $styleDom = $doc->createElement('style', $style); //Ajout information $contentDom = $doc->createElement('div'); if(!$user->checkModeEdition()) { $element = $doc->createElement('img'); $element->setAttribute('src', './themes/default/images/customrapport/logo_ordertocash.jpg'); $element->setAttribute('width', '12%'); } else { $element = $doc->createElement('img'); $element->setAttribute('src', './themes/default/images/customrapport/logo_ordertocash.jpg'); $element->setAttribute('width', '12%'); } $div = $doc->createElement('div'); $div->setAttribute('style', "clear:both;"); $div->appendChild($element); $contentDom->appendChild($div); $i = 0; foreach($adresse as $item){ $element = $doc->createElement('span', $item); $contentDom->appendChild($element); $element = $doc->createElement('br'); $contentDom->appendChild($element); $i++; } $element = $doc->createElement('center', $societe_name.' Enquête Financière'); $element->setAttribute('style', 'font-size:17px'); $contentDom->appendChild($element); /*if ($user->checkModeEdition() || $user->getIdClient()==110) { $element = $doc->createElement('span', "Les équipes d'Order To Cash se tiennent à votre disposition pour vous assister dans l'interprétation de ces données au 01 84 16 50 00 ou par mail à l'adresse suivante : contact@ordertocash.fr"); $element->setAttribute('style', 'text-align:left;'); $contentDom->appendChild($element); }*/ $ajout = $doc->createElement('div'); $ajout->appendChild($styleDom); $ajout->appendChild($contentDom); //Après
".print_r($InfoUser, 1)."". "
".print_r($InfoEnq, 1).""; $mail = new Scores_Mail_Method(); $mail->setFromKey('production'); $mail->addToKey('support'); $mail->setSubject($sujet); $mail->setBodyHtml($texte); if ($mail->execute()) { $commande = true; } } $this->view->assign('commande', $commande); $this->view->assign('formError', $formError); $this->view->assign('message', $message); $this->view->assign('InfoUser', $InfoUser); $this->view->assign('InfoEnq', $InfoEnq); $this->view->assign('siren', substr($this->siret, 0,9)); } //Affichage du formulaire if ($commande == false) { $ws = new WsScores(); $infosEntrep = $ws->getIdentite($this->siret, $this->id); $this->view->assign('Etab', $infosEntrep); $user = new Scores_Utilisateur(); $this->view->assign('user', $user); } } /** * Affichage des informations de scoring creditsafe */ public function scoringAction() { $this->view->headTitle()->prepend("Scoring Credit Safe"); $this->view->headTitle()->prepend("Siret ".$this->siret); $user = new Scores_Utilisateur(); if(!$user->checkModeEdition() or !$user->checkPerm('SCORECSF')) $this->render('error/perms', null, 'error'); define('CREDITSAFE_WS_URL', 'https://www.creditsafe.fr/getdata/service/CSFRServices.asmx'); define('CREDITSAFE_WS_URI', 'https://www.creditsafe.fr/getdata/service/'); define('CREDITSAFE_WS_USER', 'scores_decisions'); define('CREDITSAFE_WS_PASS', 'yoann1306'); define('CREDITSAFE_WS_REF', 'ref'); /** * L'Url du WSDL est bonne simplament le formatage des données a changés, il faut respecter les données ! * comparer les exemples donnés. * */ $req='