authenticate(); $this->permission('KBIS'); //Vérification du siren if (intval($siren)==0) { $this->sendError('1010'); } elseif (strlen($siren)!=9) { $this->sendError('1020'); } $hostname = 'http://'.$_SERVER['SERVER_NAME']; if ($_SERVER['SERVER_PORT']!='80'){ $hostname.= ':'.$_SERVER['SERVER_PORT']; } $c = Zend_Registry::get('config'); $path = realpath($c->profil->path->secure).'/kbis/'; //Le fichier existe avec une date de validité inférieure à 1 jour $filepdf = $path.$siren.'.pdf'; if ( file_exists($filepdf) && date('Ymd', filemtime($filepdf))==date('Ymd') ) { $this->wsLog('kbis', $siren, basename($filepdf)); return $hostname.DOC_WEB_URL.'kbis/'.basename($filepdf); } else { $file = null; //On vérifie quand même si il n'existe pas une commande en html $dir = $path.date('Ymd'); if ( file_exists($dir) ) { foreach ( glob($dir.'/'.$siren.'-*.html') as $file ) { break; } } if ( empty($file) ) { //Téléchargement du KBIS $result = array(); exec('php '.$c->profil->path->batch.'/getKbis.php --siren '.$siren, $result); $result = end($result); if (substr($result,-5)=='.html') { $file = $dir.'/'.$result; $this->wsLog('kbis', $siren, $result); } elseif ( $result!='ERREUR') { throw new SoapFault('MSG',$result); } else { $text = 'La récupération du KBIS a échoué sur le siren : '.$siren; sendMail( 'production@scores-decisions.com', 'supportdev@scores-decisions.com', '[ERREUR KBIS]', $text); throw new SoapFault('0000',"Erreur récupération du kbis"); } } else { $this->wsLog('kbis', $siren, basename($file)); } //Génération du PDF require_once 'wkhtmltopdf/wkhtmltopdf.php'; $pdf = new wkhtmltopdf(); $fileOut = $pdf->exec($file, $filepdf); if ( !file_exists($filepdf) ) { throw new SoapFault('0000',"Fichier PDF introuvable"); } return $hostname.DOC_WEB_URL.'kbis/'.basename($filepdf); } } /** * Liste des bilans disponible au format image * @param string $identifiant * @param int $position * @param int $nbRep * @return Bilans * @throws SoapFault */ public function getBilans($identifiant, $position = 0, $nbRep = 200) { $this->authenticate(); if ( empty($position) ) { $position = 0; } if ($nbRep > 200) { $nbRep = 200; } if ( strlen($identifiant)!=9 ) { $this->sendError('1010'); } /* * Entreprise avec des bilans * Base RNCS * Si association alors lire dans la base de données pour établir la liste * //@todo : Enregistrer dans la base jo.greffes_bilans */ $iInsee = new MInsee(); $identite = $iInsee->getIdentiteLight($identifiant); if (empty($identite['id'])){ $this->sendError('1020'); } $fj = $identite['FJ']; $assoFormeJuridique = array( //Associations '9210','9220','9221','9222','9223','9224','9230','9240','9260', //Syndicats '7345','7353','7354','7355','8410','8420','9110', //Fondation '9300', ); $list = array(); //Liste des bilans association if ( in_array($fj, $assoFormeJuridique) ) { $bilansM = new Application_Model_JoAssoBilans(); //Comptage $sql = $bilansM->select() ->from($bilansM, 'COUNT(*) as nb') ->where('siren=?', $identifiant); $nbBilans = $bilansM->fetchRow($sql)->nb; if ($nbBilans>0) { //Liste $sql = $bilansM->select() ->from($bilansM, array('dateCloture', 'Assoc_Date_Declaration', 'pdfLink', 'typeCompte', 'pdfSize', 'pdfPage')) ->where('siren = ?', $identifiant) ->order('dateCloture DESC') ->limit($nbRep, $position); $bilans = $bilansM->fetchAll($sql); if( $bilans->count() > 0) { foreach ($bilans as $item) { $filename = basename($item->pdfLink); $file = SECURE_STORAGE . 'associations/bilans/' . $filename; $bilansList = new Bilan(); $bilansList->DateCloture = substr($item->dateCloture,0,4).substr($item->dateCloture,5,2).substr($item->dateCloture,8,2); $bilansList->DateDepot = substr($item->Assoc_Date_Declaration,0,4).substr($item->Assoc_Date_Declaration,5,2).substr($item->Assoc_Date_Declaration,8,2); $bilansList->DureeExercice = ''; $bilansList->Type = $item->typeCompte; //Chech file exist if ( file_exists($file) ) { $bilansList->File = 'ASS_'.$filename; $bilansList->FileSize = $item->pdfSize; $bilansList->NumberOfPages = $item->pdfPage; $bilansList->ModeDiffusion = 'T'; } $list[] = $bilansList; } } } } //Liste des bilans Infogreffe else { require_once 'Metier/Infogreffe/InfogreffeBi.php'; $infogreffe = new Metier_Infogreffe_Bi($identifiant); $list = $infogreffe->getList(); $nbBilans = count($list); } $output = new Bilans(); $output->nbReponses = $nbBilans; $output->result = $list; return $output; } /** * Commande du fichier (URL ou Référence de commande) * @param string $identifiant * SIREN ou autre identifiant * @param string $diffusion * Mode de diffusion T, C * @param string $dateCloture * Date de cloture du bilan (SSAAMMJJ) * @param string $reference * Nom du fichier ou référence de commande * @return string * URL ou identifiant de commande */ public function getBilan($identifiant, $diffusion, $dateCloture, $reference = '') { $this->authenticate(); $this->permission('actes'); if ( strlen($identifiant)!=9 ) { $this->sendError('1010'); } $output = ''; /** * Association */ if ( substr($reference, 0,4) == 'ASS_' ) { switch ( $diffusion ) { case 'T': if ( preg_match('/^ASS_([0-9]{9})_([0-9]{8})/', $reference, $parseRef) ) { $controlSiren = $parseRef[1]; $controlDate = substr($parseRef[2],4,4).substr($parseRef[2],2,2).substr($parseRef[2],0,2); if ( $controlSiren == $identifiant && $controlDate == $dateCloture) { $filename = substr($reference,4); //@todo : Emplacement des fichiers $file = SECURE_STORAGE . 'associations/bilans/' . $filename; $dest = DOC_WEB_LOCAL . 'associations/' . $reference; if ( file_exists($file) && copy($file, $dest)) { $hostname = 'http://'.$_SERVER['SERVER_NAME']; if ($_SERVER['SERVER_PORT']!='80') { $hostname.= ':'.$_SERVER['SERVER_PORT']; } $output = $hostname . '/fichier/associations/' . basename($dest); $dateClotureD = substr($dateCloture,4,2).'/'.substr($dateCloture,6,2).'/'.substr($dateCloture,0,4); $this->wsLog('greffe_bilans', $identifiant, 'Bilan association au '.$dateClotureD); } } } break; } } else { switch ( $diffusion ) { case 'T': $bilansM = new Application_Model_JoGreffesBilans(); $sql = $bilansM->select() ->where('siren=?', $identifiant) ->where('date_cloture=?', substr($dateCloture,0,4).'-'.substr($dateCloture,4,2).'-'.substr($dateCloture,6,2)); $infos = $bilansM->fetchRow($sql); if ( $infos===null ) { throw new SoapFault('ERR', 'Bilan indisponible'); } //Go to Infogreffe service if ( $infos->pdfLink=='' ) { require_once 'Infogreffe/Infogreffe.php'; $infogreffe = new Infogreffe(); $url = $infogreffe->getBilan($siren, $diffusion, array( 'greffe' => $infos->numGreffe, 'dossier_millesime' => substr($infos->numRC,0,2), 'dossier_statut' => substr($infos->numRC,2,1), 'dossier_chrono' => substr($infos->numRC,3), 'num_depot' => $infos->num_depot, 'date_cloture' => WDate::dateT('Ymd','d/m/Y',$infos->date_cloture) )); $pdf = $infogreffe->download($url); } else { $pdf = $infos->pdfLink; } if ( !empty($pdf) ) { $file = SECURE_STORAGE . 'greffes/bilans/' . $pdf; $dest = DOC_WEB_LOCAL . 'greffes/' . $pdf; if ( file_exists($file) && copy($file, $dest)) { $hostname = 'http://'.$_SERVER['SERVER_NAME']; if ($_SERVER['SERVER_PORT']!='80') { $hostname.= ':'.$_SERVER['SERVER_PORT']; } $output = $hostname . '/data/greffes/' . basename($dest); $this->wsLog('greffe_bilans', $siren, $dateCloture); } else { throw new SoapFault('ERR', 'Fichier introuvable'); } } break; case 'C': // Renvoyer l'id de commande break; } } return $output; } /** * Liste des actes au format image * @param string $identifiant * @return Actes */ public function getActes($identifiant) { require_once 'Metier/Infogreffe/InfogreffeAc.php'; $infogreffe = new Metier_Infogreffe_Ac($identifiant); $list = $infogreffe->getList(true); $nbActes = count($list); if ($nbActes>0) { //Information INPI $rncs = new MRncs(); foreach ($list as $i => $item) { $result = $rncs->getListeDepots($identifiant, $item->DepotDate); if (count($result)>0) { foreach ($result as $infos) { $list[$i]->infos[] = $infos['libDepot']; } } } } $output = new Actes(); $output->result = $list; $output->nbReponses = $nbActes; return $output; } protected function getActe(){} }