diff --git a/application/Bootstrap.php b/application/Bootstrap.php new file mode 100644 index 00000000..60f4d291 --- /dev/null +++ b/application/Bootstrap.php @@ -0,0 +1,185 @@ +getOptions()); + Zend_Registry::set('config', $config); + + //Load old config + require_once 'WsScore/Configure.php'; + $oldconfig = new Configure(); + + return $config; + } + + //Initialisation global des paramètres de vue + protected function _initViewSettings() + { + $this->bootstrap('view'); + $view = $this->getResource('view'); + $view->setEncoding('UTF-8'); + $view->doctype('HTML5'); + $view->headMeta() + ->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8') + ->appendHttpEquiv('Content-Language', 'fr-FR'); + $view->headLink() + ->appendStylesheet('/styles/reset.css', 'all') + ->appendStylesheet('/styles/main.css', 'all'); + $view->headScript()->appendFile('/scripts/jquery.js', 'text/javascript'); + $view->headScript()->appendFile('/scripts/scripts.js', 'text/javascript'); + $view->headTitle()->setSeparator(' - '); + $view->headTitle('WebService Scores & Decisions'); + } + + //Initialisation global des paramètres de log + protected function _initLogging() + { + $c = Zend_Registry::get('config'); + $WsLogger = new Zend_Log(); + $WsFileWriter = new Zend_Log_Writer_Stream($c->profil->path->log.'/wsentreprise.log'); + $WsFileWriter->addFilter(Zend_Log::INFO); + $WsLogger->addWriter($WsFileWriter); + Zend_Registry::set('WsLogger', $WsLogger); + } + + protected function _initNavigation() + { + $view = $this->bootstrap('layout')->getResource('layout')->getView(); + + //@todo : gérer les versions et les clients + + $menu = array( + array( + 'label' => 'Accueil', + 'controller' => 'index', + 'action' => 'index', + ), + array( + 'label' => 'Documentation', + 'controller' => 'documentation', + 'action' => 'index', + 'pages' => array( + array( + 'label' => 'Entreprise', + 'controller' => 'documentation', + 'action' => 'index', + ), + array( + 'label' => 'Code erreurs/messages', + 'controller' => 'documentation', + 'action' => 'erreur', + ), + array( + 'label' => 'Exemples', + 'controller' => 'documentation', + 'action' => 'exemples', + ), + ), + ), + array( + 'label' => 'Démonstration', + 'controller' => 'demo', + 'action' => 'index', + ), + ); + $view->navigation(new Zend_Navigation($menu)); + } + + protected function _initRouter() + { + $this->bootstrap('frontController'); + $front = $this->getResource('frontController'); + $router = $front->getRouter(); + + //Lire les services disponibles et créer les routes + $services = require_once APPLICATION_PATH . '/../library/WsScore/ServicesConfig.php'; + foreach( $services as $section => $params ) + { + if ($params['actif']) { + $route = new Zend_Controller_Router_Route($section.'/:version', array( + 'controller' => 'service', + 'action' => 'index', + 'service' => $section, + 'version' => '', + )); + $router->addRoute($section, $route); + + $route = new Zend_Controller_Router_Route('jsonrpc/'.$section.'/:version', array( + 'controller' => 'jsonrpc', + 'action' => 'index', + 'service' => $section, + 'version' => '', + )); + $router->addRoute('jsonrpc-'.$section, $route); + } + } + + //Route pour WS Clients + $route = new Zend_Controller_Router_Route('clients/:client/:version', array( + 'controller' => 'service', + 'action' => 'index', + 'service' => 'clients', + 'client' => '', + 'version' => '' + )); + $router->addRoute('client', $route); + + $fichierRoute = new Zend_Controller_Router_Route('fichier/:action/:fichier', array( + 'controller' => 'fichier', + 'fichier' => '', + )); + $router->addRoute('fichier', $fichierRoute); + return $router; + } + + protected function _initDb() + { + $c = Zend_Registry::get('config'); + try { + $db = Zend_Db::factory($c->profil->db->metier); + } catch ( Exception $e ) { + if (APPLICATION_ENV == 'development') { + echo '
'; print_r($e); echo ''; + } else { + echo "Le service rencontre actuellement un problème technique."; + } + exit; + } + + /** + * Set the default adapter to use with all model + */ + Zend_Db_Table::setDefaultAdapter($db); + } + + protected function _initWsDebug() + { + $autoloader = Zend_Loader_Autoloader::getInstance(); + $autoloader->registerNamespace('WsDebug'); + + $options = array( + 'plugins' => array( + 'Exception', + ), + ); + + $debug = new WsDebug_Controller_Plugin_Debug($options); + + $this->bootstrap('frontController'); + $frontController = $this->getResource('frontController'); + $frontController->registerPlugin($debug); + } + + protected function _initCache() + { + //MetadataCache pour la base de données + $frontendOptions = array( + 'lifetime' => 14400, + 'automatic_serialization' => true + ); + $backendOptions = array(); + $cache = Zend_Cache::factory('Core','Apc', $frontendOptions, $backendOptions); + Zend_Db_Table_Abstract::setDefaultMetadataCache($cache); + } +} \ No newline at end of file diff --git a/application/configs/webservices.ini b/application/configs/webservices.ini new file mode 100644 index 00000000..2152341f --- /dev/null +++ b/application/configs/webservices.ini @@ -0,0 +1,20 @@ +[production] +webservice.scores.wsdl = "" +webservice.scores.options.location = "http://192.168.3.2/ws2/" +webservice.scores.options.uri = "http://192.168.3.2/" +webservice.scores.options.trace = 1 +webservice.scores.options.soap_version = SOAP_1_1 + +[staging] +webservice.scores.wsdl = "" +webservice.scores.options.location = "http://78.31.45.206/ws2/" +webservice.scores.options.uri = "http://78.31.45.206/" +webservice.scores.options.trace = 1 +webservice.scores.options.soap_version = SOAP_1_1 + +[development] +webservice.scores.wsdl = "" +webservice.scores.options.location = "http://78.31.45.206/ws2/" +webservice.scores.options.uri = "http://78.31.45.206/" +webservice.scores.options.trace = 1 +webservice.scores.options.soap_version = SOAP_1_1 \ No newline at end of file diff --git a/application/controllers/DemoController.php b/application/controllers/DemoController.php new file mode 100644 index 00000000..42d00aaa --- /dev/null +++ b/application/controllers/DemoController.php @@ -0,0 +1,105 @@ + array( + 'ws' => 'entreprise/v0.7?wsdl', + 'form' => 'getIdentite', + ), + ); + + public function init() + { + require_once 'Web/demo/getIdentite.php'; + $auth = Zend_Auth::getInstance(); + $this->_username = $auth->getIdentity()->username; + $this->_hash = $auth->getIdentity()->hash; + } + + public function indexAction() + { + //Liste + + + $tabMethods = array(); + foreach($this->methods as $method => $element){ + $url = $this->view->url(array( + 'controller' => 'demo', + 'action' => 'method', + 'name' => $method, + )); + $tabMethods[] = array( + 'nom' => $method, + 'url' => $url, + ); + } + + $this->view->assign('methods', $tabMethods); + } + + public function methodAction() + { + $method = $this->_getParam('name',''); + $this->view->assign('method', $method); + //Affichage du formulaire + if (array_key_exists($method, $this->methods)){ + $class = 'Form_'.$method; + if (class_exists($class)){ + $form = new $class; + $form->addElement('hidden', 'method', array( + 'value' => $method, + )); + if ($this->_request->isPost()) { + $formData = $this->_request->getPost(); + $form->populate($formData); + } + $this->view->assign('form', $form); + } else { + $this->view->assign('message',"Impossible d'afficher le formulaire !"); + } + } + } + + public function requeteAction() + { + if ($this->_request->isPost()) { + $formData = $this->_request->getPost(); + $method = $formData['method']; + $class = 'Form_'.$method; + if (class_exists($class)) { + $form = new $class; + if ($form->isValid($formData)) { + $method = $formData['method']; + $siret = $formData['siret']; + $accesWs = $this->methods[$method]['ws']; + $hostName = $this->getRequest()->getHttpHost(); + $options = array( + 'login' => $this->_username, + 'password' => $this->_hash, + 'features' => SOAP_USE_XSI_ARRAY_TYPE + SOAP_SINGLE_ELEMENT_ARRAYS + ); + $client = new Zend_Soap_Client('http://'.$hostName.'/'.$accesWs, $options); + $params = new StdClass(); + $params->siret = $siret; + $soap = array( + 'requete' => $params, + 'reponse' => $client->getIdentite($params) + ); + $this->view->assign('soap',$soap); + $xml = array( + 'requete' => $client->getLastRequest(), + 'reponse' => $client->getLastResponse() + ); + $this->view->assign('xml',$xml); + } else { + $this->_forward('method', 'demo', null, array('name'=> 'getIdentite')); + } + } + } + } + +} + diff --git a/application/controllers/DocumentationController.php b/application/controllers/DocumentationController.php new file mode 100644 index 00000000..b6cba627 --- /dev/null +++ b/application/controllers/DocumentationController.php @@ -0,0 +1,209 @@ +getRequest(); + $ws = strtolower($request->getParam('ws','Entreprise')); + $auth = Zend_Auth::getInstance(); + + //Si client possède un webservice particulier alors on redirige vers la doc clients + $clients = include APPLICATION_PATH . '/../library/WsScore/Clients/ClientsConfig.php'; + foreach( $clients as $section => $params ){ + if ($params['actif']) { + $wsClients[$params['idClient']] = $section; + } + } + + if (array_key_exists($auth->getIdentity()->idClient, $wsClients)){ + + $this->_forward('clients', 'documentation', null, array( + 'nom' => $wsClients[$auth->getIdentity()->idClient] + )); + + } else { + + // Liste des webservices + $services = include APPLICATION_PATH . '/../library/WsScore/ServicesConfig.php'; + foreach( $services as $section => $params ) + { + if ($params['actif']) { + $wsServices[$section] = $params; + } + } + + // On vérifie que l'utilisateur peut accèder à la documentation + $username = $auth->getIdentity()->username; + $idClient = $auth->getIdentity()->idClient; + if ( array_key_exists($ws, $wsServices) ) + { + if ( isset($wsServices['idClient']) && $idClient!=$wsServices['idClient'] ) + { + $this->renderScript('documentation/nodoc.phtml'); + exit; + } + if ( isset($wsServices['user']) && !in_array($username, $wsServices['user']) ) + { + $this->renderScript('documentation/nodoc.phtml'); + exit; + } + } + + // Gestion des versions + $serviceVersions = array(); + $configServiceVersions = $wsServices[$ws]['versions']; + foreach( $configServiceVersions as $section => $params ){ + $serviceVersions[$section] = $params; + if ($params['defaut']) { + $defautVersion = $section; + } + } + $version = $request->getParam('version', $defautVersion); + + // Charger les classes et les types pour le service suivant la version + $pathClassService = 'WsScore/'.ucfirst($ws).'/v'.$version.'/'; + + //Génération du tableau de mapping + $classmap = array(); + $wsConfig = new Zend_Config_Ini($pathClassService.ucfirst($ws).'.ini'); + if ( $wsConfig->count()>0 ) { + foreach($wsConfig->Type->toArray() as $Type){ + $classmap[$Type] = $Type; + } + } + + //Définir l'url d'accès au WSDL + $wsdl_url = $this->view->baseUrl(); + if (APPLICATION_ENV == 'production'){ + $wsdl_url.= '/'.$ws.'/v'.$version.'?wsdl'; + } else { + $wsdl_url.= '/'.$ws.'/v'.$version.'?wsdl-auto'; + } + // Affichage de la documentation + require_once 'Web/WebClassDoc.php'; + $doc = new WebClassDoc(ucfirst($ws), $classmap, $pathClassService); + $tabServiceMethods = $doc->getServiceMethods(); + // Tri des méthodes par ordre alphabétique + $tabServiceMethodsK = array(); + foreach($tabServiceMethods as $method) { + $tabServiceMethodsK[$method['name']] = $method; + } + ksort($tabServiceMethodsK); + $tabServiceTypes = $doc->getServiceTypes(); + $this->view->assign('wsdl', $wsdl_url); + $this->view->assign('serviceMethods', $tabServiceMethodsK); + $this->view->assign('serviceTypes', $tabServiceTypes); + + } + } + + public function clientsAction() + { + $request = $this->getRequest(); + $client = strtolower($request->getParam('nom')); + $ws = 'entreprise'; + + // Gestion des versions + $clients = include APPLICATION_PATH . '/../library/WsScore/Clients/ClientsConfig.php'; + $configServiceVersions = $clients[$client]['versions']; + foreach( $configServiceVersions as $section => $params ){ + $serviceVersions[$section] = $params; + if ($params['defaut']) { + $defautVersion = $section; + } + } + $version = $request->getParam('version', $defautVersion); + + // Charger les classes et les types pour le service suivant la version + $pathClassService = 'WsScore/Clients/'.ucfirst($client).'/v'.$version.'/'; + + //Génération du tableau de mapping + $classmap = array(); + $wsConfig = new Zend_Config_Ini($pathClassService.ucfirst($ws).'.ini'); + if ( $wsConfig->count()>0 ) { + foreach($wsConfig->Type->toArray() as $Type){ + $classmap[$Type] = $Type; + } + } + + //Définir l'url d'accès au WSDL + $wsdl_url = $this->view->baseUrl(); + + if (APPLICATION_ENV == 'production'){ + $wsdl_url.= '/clients/'.$client.'/v'.$version.'?wsdl'; + } else { + $wsdl_url.= '/clients/'.$client.'/v'.$version.'?wsdl-auto'; + } + + // Affichage de la documentation + require_once 'Web/WebClassDoc.php'; + $doc = new WebClassDoc(ucfirst($ws), $classmap, $pathClassService); + $tabServiceMethods = $doc->getServiceMethods(); + // Tri des méthodes par ordre alphabétique + $tabServiceMethodsK = array(); + foreach($tabServiceMethods as $method) { + $tabServiceMethodsK[$method['name']] = $method; + } + ksort($tabServiceMethodsK); + $tabServiceTypes = $doc->getServiceTypes(); + $this->view->assign('wsdl', $wsdl_url); + $this->view->assign('serviceMethods', $tabServiceMethodsK); + $this->view->assign('serviceTypes', $tabServiceTypes); + + } + + + + /** + * Liste les exemples de code disponible pour chaque méthode + */ + public function exemplesAction() + { + + + } + + /** + * Affichage exemple de code avec coloration syntaxique + * Le code doit être placé dans public/code et doit être nommé + * [nom de la méthode]-langage.txt + */ + public function codeAction() + { + $langage = strtolower($this->_getParam('langage','')); + $element = $this->_getParam('element',''); + + $fichier = APPLICATION_PATH . + '/../public/code/' . $element . '-' . $langage . '.txt'; + if (file_exists($fichier)){ + $sourceCode = file_get_contents($fichier); + + require_once 'geshi/geshi.php'; + $geshi = new GeSHi($sourceCode, $langage); + $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); + $sourceHighlight = $geshi->parse_code(); + + $this->view->assign('langage', strtoupper($langage)); + $this->view->assign('code', $sourceHighlight); + } else { + $this->view->assign('langage', + 'Element non traités, Vous pouvez aussi nous fournir des exemples.'); + } + } + + /** + * Affichage de la liste des erreurs avec leur code + */ + public function erreurAction() + { + require_once 'WsScore/WsScore.php'; + $ws = new WsScore(); + $erreurs = $ws->listError; + $this->view->assign('erreurs', $erreurs); + } +} + diff --git a/application/controllers/ErrorController.php b/application/controllers/ErrorController.php new file mode 100644 index 00000000..dca8da6f --- /dev/null +++ b/application/controllers/ErrorController.php @@ -0,0 +1,47 @@ +_getParam('error_handler'); + + switch ($errors->type) { + case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE: + case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: + case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: + + // 404 error -- controller or action not found + $this->getResponse()->setHttpResponseCode(404); + $this->view->message = 'Page not found'; + break; + default: + // application error + $this->getResponse()->setHttpResponseCode(500); + $this->view->message = 'Application error'; + break; + } + + // Log exception, if logger available + if ($log = $this->getLog()) { + $log->crit($this->view->message, $errors->exception); + } + + // conditionally display exceptions + if ($this->getInvokeArg('displayExceptions') == true) { + $this->view->exception = $errors->exception; + } + + $this->view->request = $errors->request; + } + + public function getLog() + { + $bootstrap = $this->getInvokeArg('bootstrap'); + if (!$bootstrap->hasPluginResource('Log')) { + return false; + } + $log = $bootstrap->getResource('Log'); + return $log; + } +} + diff --git a/application/controllers/ExportController.php b/application/controllers/ExportController.php new file mode 100644 index 00000000..478432b0 --- /dev/null +++ b/application/controllers/ExportController.php @@ -0,0 +1,20 @@ +_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + } + + public function indexAction() + { + echo "Export"; + } + + protected function checkFile($path) + { + + } + +} \ No newline at end of file diff --git a/application/controllers/FichierController.php b/application/controllers/FichierController.php new file mode 100644 index 00000000..4c9d6a01 --- /dev/null +++ b/application/controllers/FichierController.php @@ -0,0 +1,139 @@ +_helper->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + } + + public function bodaccAction() + { + $auth = Zend_Auth::getInstance(); + if ( $auth->hasIdentity() ) { + + $directory = '/mnt/bodacc'; + + $q = $this->getRequest()->getParam('q'); + $file = base64_decode($q); + + $output_file = $directory.'/'.$file; + + if (file_exists($output_file) && filesize($output_file)>0) { + $content_type = 'application/pdf'; + header('Content-type: '.$content_type.''); + header('Content-Length: '.filesize($output_file)); + header('Content-MD5: '.base64_encode(md5_file($output_file))); + header('Content-Disposition: inline; filename="'.basename($output_file).'"'); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + ini_set('zlib.output_compression','0'); + echo file_get_contents($output_file); + + //Log de la requete + $tabInsert = array( + 'login' => $auth->getIdentity()->username, + 'idClient' => $auth->getIdentity()->idClient, + 'page' => 'histobodacc', + 'siren' => '', + 'nic' => '', + 'params' => $file, + 'test' => 0, + 'raisonSociale' => '', + 'cp' => '', + 'ville' => '', + 'ipClient' => $_SERVER['REMOTE_ADDR'], + ); + require_once 'framework/common/mysql.php'; + $iDbCrm = new WDB('sdv1'); + $rep = $iDbCrm->insert('logs', array_merge($tabInsert,$tabRdvInsee), false, true); + + } else { + echo "Erreur lors de l'affichage du fichier."; + } + } else { + echo "Authentification échoué."; + } + } + + public function logsAction() + { + $file = $this->getRequest()->getParam('fichier'); + $content_type = 'application/csv-tab-delimited-table'; + $c = Zend_Registry::get('config'); + $path = realpath($c->profil->path->files).'/'; + //Envoi du fichier sur la sortie standard + if ( file_exists($path.$file) ) { + header('Content-Transfer-Encoding: none'); + header('Content-type: ' . $content_type.''); + header('Content-Length: ' . filesize($path.$file)); + header('Content-MD5: ' . base64_encode(md5_file($path.$file))); + header('Content-Disposition: filename="' . basename($path.$file) . '"'); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + ini_set('zlib.output_compression', '0'); + echo file_get_contents($path.$file); + } + } + + public function csvAction() + { + $file = $this->getRequest()->getParam('fichier'); + $content_type = 'application/csv-tab-delimited-table'; + $c = Zend_Registry::get('config'); + $path = realpath($c->profil->path->files).'/'; + //Envoi du fichier sur la sortie standard + if ( file_exists($path.$file) ) { + header('Content-Transfer-Encoding: none'); + header('Content-type: ' . $content_type.''); + header('Content-Length: ' . filesize($path.$file)); + header('Content-MD5: ' . base64_encode(md5_file($path.$file))); + header('Content-Disposition: filename="' . basename($path.$file) . '"'); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + ini_set('zlib.output_compression', '0'); + echo file_get_contents($path.$file); + } + } + + public function kbisAction() + { + $file = $this->getRequest()->getParam('fichier'); + $content_type = 'application/pdf'; + $c = Zend_Registry::get('config'); + $path = realpath($c->profil->path->secure).'/kbis/'; + //Envoi du fichier sur la sortie standard + if ( file_exists($path.$file) ) { + header('Content-Transfer-Encoding: none'); + header('Content-type: ' . $content_type.''); + header('Content-Length: ' . filesize($path.$file)); + header('Content-MD5: ' . base64_encode(md5_file($path.$file))); + header('Content-Disposition: filename="' . basename($path.$file) . '"'); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + ini_set('zlib.output_compression', '0'); + echo file_get_contents($path.$file); + } + } + + public function associationsAction() + { + $file = $this->getRequest()->getParam('fichier'); + $content_type = 'application/pdf'; + $c = Zend_Registry::get('config'); + $path = realpath($c->profil->path->files).'/associations/'; + //Envoi du fichier sur la sortie standard + if ( file_exists($path.$file) ) { + header('Content-Transfer-Encoding: none'); + header('Content-type: ' . $content_type.''); + header('Content-Length: ' . filesize($path.$file)); + header('Content-MD5: ' . base64_encode(md5_file($path.$file))); + header('Content-Disposition: filename="' . basename($path.$file) . '"'); + header('Cache-Control: private, max-age=0, must-revalidate'); + header('Pragma: public'); + ini_set('zlib.output_compression', '0'); + echo file_get_contents($path.$file); + } + } + +} \ No newline at end of file diff --git a/application/controllers/ImportController.php b/application/controllers/ImportController.php new file mode 100644 index 00000000..3d1c3df5 --- /dev/null +++ b/application/controllers/ImportController.php @@ -0,0 +1,78 @@ +_helper->layout()->disableLayout(); + + $this->view->inlineScript()->appendFile('/scripts/jquery.form.js'); + $this->view->inlineScript()->appendFile('/scripts/jqueryprogressbar.js'); + + $this->view->assign('filesize', ini_get('upload_max_filesize')); + + $request = $this->getRequest(); + $idClient = $request->getParam('idClient', null); + $login = $request->getParam('login', null); + + $this->view->assign('idClient', $idClient); + $this->view->assign('login', $login); + } + + public function fileuploadAction() + { + $this->_helper->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $request = $this->getRequest(); + $idClient = $request->getParam('idClient'); + $login = $request->getParam('login'); + + $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/configuration.ini', 'path'); + $path = realpath($config->data).'/validation'; + if(!file_exists($path)) mkdir($path); + + if ( isset($_FILES) && count($_FILES)==1 ){ + $n = $_FILES['fichier']['name']; + $s = $_FILES['fichier']['size']; + $tmp_name = $_FILES['fichier']['tmp_name']; + + $extValide = array('csv'); + $extension = strrchr($n,'.'); + $extension = substr($extension,1); + //Vérifier l'extension du fichier + if(!in_array($extension, $extValide)){ + echo "Extension de fichier incorrect !"; + } elseif (move_uploaded_file($tmp_name, $path.'/'.$idClient.'-'.$name.'.'.$extension)){ + echo "Fichier envoyé, view->url(array( + 'controller' => 'import', + 'action' => 'checkfile', + 'file' => $idClient.'-'.$name.'.'.$extension, + ))."\">Vérifier le format"; + } else { + echo "Erreur : ".$_FILES['fichier']['error']; + } + } + } + + /** + * Etat de progression de l'upload du fichier + */ + public function fileprogressAction() + { + $this->_helper->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $request = $this->getRequest(); + $key = $request->getParam('key', ''); + if (!empty($key)) { + //$rep sera égal à false si la clef n'existe pas dans le cache apc + $rep = apc_fetch('upload_'.$key); + echo json_encode($rep); + } + } + + + +} \ No newline at end of file diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php new file mode 100644 index 00000000..529fc3a2 --- /dev/null +++ b/application/controllers/IndexController.php @@ -0,0 +1,86 @@ + $params ) + { + if ($params['actif']) { + $wsServices[$section] = $params; + } + } + + //Parcourir les webservices + foreach($wsServices as $serviceName => $serviceInfo) + { + if ( !isset($wsServices[$serviceName]['idClient']) || $wsServices[$serviceName]['idClient'] == $auth->getIdentity()->idClient) + { + $serviceVersions = array(); + $configServiceVersions = $wsServices[$serviceName]['versions']; + foreach( $configServiceVersions as $section => $params ) + { + $serviceVersions[$section] = $params; + $this->serviceList[$serviceName]['version'] = $serviceVersions; + } + } + } + + //Lecture des webservices Clients + $clients = include APPLICATION_PATH . '/../library/WsScore/Clients/ClientsConfig.php'; + foreach( $clients as $section => $params ){ + if ($params['actif']) { + $wsClients[$section] = $params; + } + } + + //Parcourir les webservices clients + foreach($wsClients as $serviceName => $serviceInfo) + { + if ($wsClients[$serviceName]['idClient'] == $auth->getIdentity()->idClient) { + $this->serviceList = array(); + } + if ($wsClients[$serviceName]['idClient'] == $auth->getIdentity()->idClient || in_array($auth->getIdentity()->username, $wsClients[$serviceName]['user']) ) + { + $serviceVersions = array(); + $configServiceVersions = $wsClients[$serviceName]['versions']; + foreach( $configServiceVersions as $section => $params ) + { + $serviceVersions[$section] = $params; + $this->serviceList[$serviceName]['version'] = $serviceVersions; + $this->serviceList[$serviceName]['type'] = 'client'; + } + } + } + } + + public function indexAction() + { + $displayWs = array(); + if (count($this->serviceList)>0) + { + foreach($this->serviceList as $key => $ws) + { + $displayWs[$key] = $ws; + } + } + + $this->view->assign('ws', $displayWs); + } + + public function testAction() + { + //Connexion au service - Faire comme ci on charger le WSDL de l'extérieur + //getFunctions / getTypes + //Pour chaque Function, identifier les Types puis proposer les champs associés + //Valider les formulaires pour executer la requête du service + //Utiliser le jeux de tests disponible + } +} + diff --git a/application/controllers/JsonrpcController.php b/application/controllers/JsonrpcController.php new file mode 100644 index 00000000..c7441e56 --- /dev/null +++ b/application/controllers/JsonrpcController.php @@ -0,0 +1,108 @@ +_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $request = $this->getRequest(); + + //Nom du service + $serviceName = strtolower($request->getParam('service', 'Entreprise')); + + //Service spécifique client + if ($serviceName == 'clients') { + $client = $request->getParam('client', ''); + //Liste des clients + $clients = array(); + $listeClients = include APPLICATION_PATH . '/../library/WsScore/Clients/ClientsConfig.php'; + foreach ( $listeClients as $section => $params ) { + if ($params['actif']){ + $clients[] = $section; + } + } + if (!in_array($client, $clients)){ + echo 'Service clients introuvable !'; + exit; + } + $configServiceVersions = $clients[$client]['versions']; + } + else + { + //Service versions + $services = include APPLICATION_PATH . '/../library/WsScore/ServicesConfig.php'; + $configServiceVersions = $services[$serviceName]['versions']; + } + + //Liste des versions + foreach( $configServiceVersions as $section => $params ) { + $serviceVersions[$section] = $params; + if ($params['defaut']) { + $defautVersion = $section; + } + } + $version = $request->getParam('version', 'v'.$defautVersion); + $version = substr($version, 1); + + // Version inexistante + if ( !array_key_exists($version, $serviceVersions) ) { + echo "Version inexistante."; + exit; + } + // Version désactivé + if ( !$serviceVersions[$version]['actif'] ) { + echo "Version désactivée."; + exit; + } + + // Charger les classes et les types pour le service suivant la version + if ($serviceName == 'clients') { + $pathServiceClassIni = 'WsScore/Clients/'.ucfirst($client).'/v'.$version.'/Entreprise.ini'; + $pathServiceClassPhp = 'WsScore/Clients/'.ucfirst($client).'/v'.$version.'/Entreprise.php'; + $pathServiceUrl = 'clients/'.$client.'/v'.$version.'?wsdl-auto'; + //On redéfini le nom du service + $serviceName = 'Entreprise'; + $fichierWsdl = ucfirst($client).'-'.$serviceName.'-'.$version.'.wsdl'; + } else { + $pathServiceClassIni = 'WsScore/'.ucfirst($serviceName).'/v'.$version.'/'.ucfirst($serviceName).'.ini'; + $pathServiceClassPhp = 'WsScore/'.ucfirst($serviceName).'/v'.$version.'/'.ucfirst($serviceName).'.php'; + $pathServiceUrl = $serviceName.'/v'.$version.'?wsdl-auto'; + $fichierWsdl = ucfirst($serviceName).'-'.$version.'.wsdl'; + } + + //Génération du tableau de mapping + $wsConfig = new Zend_Config_Ini($pathServiceClassIni); + foreach($wsConfig->Type->toArray() as $Type){ + $classmap[$Type] = $Type; + } + + //Inclusion des classes de données + require_once $pathServiceClassPhp; + + // Instance du server + $server = new Zend_Json_Server(); + // Define class name + $server->setClass(ucfirst($serviceName)); + + // Gestion du SMD + if($this->getRequest()->isGet()){ + // Indiquer URL endpoint + //$this->getHelper('url')->url(array('controller'=>'', 'action'=>'' )); + $server->setTarget('/jsonrpc/'.$serviceName.'/'.$version.'/') + ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2); + // Grab the SMD + $smd = $server->getServiceMap(); + + //Return the SMD to the client + if (!headers_sent()) { + header('Content-Type: application/json'); + } + echo $smd; + return; + } else { + $server->setAutoEmitResponse(true); + $server->handle(); + } + } +} \ No newline at end of file diff --git a/application/controllers/RefController.php b/application/controllers/RefController.php new file mode 100644 index 00000000..36f2d7a1 --- /dev/null +++ b/application/controllers/RefController.php @@ -0,0 +1,119 @@ +_getParam('q',''); + $fichier = $fichier . '.csv'; + if (!empty($fichier) && file_exists('fichiers/'.$fichier)) + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + list($nomFichier, $extFichier) = explode('.',$fichier); + //Distribution du fichier sur la sortie standard + switch ($extFichier) { + case 'png' : $content_type = 'image/png'; break; + case 'gif' : $content_type = 'image/gif'; break; + case 'jpeg': + case 'jpg' : $content_type = 'image/jpeg'; break; + case 'pdf' : $content_type = 'application/pdf'; break; + case 'csv' : $content_type = 'application/csv-tab-delimited-table'; break; + } + $this->getResponse()->setHeader('Content-Type', $content_type); + $contentDisposition = 'attachment'; + switch ($contentDisposition) { + case 'inline': + $this->getResponse()->setHeader('Content-Disposition', 'inline'); + break; + case 'attachment': + $this->getResponse()->setHeader('Content-Disposition', "attachment; filename=\"$fichier\""); + break; + } + + $data = file_get_contents('fichiers/'.$fichier); + + $this->getResponse()->setHeader('Content-Length', strlen($data)) + ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') + ->setHeader('Pragma', 'public') + ->setBody($data); + } else { + $this->view->assign('message', 'Fichier introuvable !'); + } + } + + /** + * Donne accès aux données contenues dans une table de base de données + */ + public function tableAction () + { + $requetesql = $this->_getParam('q',''); + $fichierCsv = $requetesql.'.csv'; + $fichierSql = $requetesql.'.sql'; + + //Emplacement des fichiers générés - lien symbolique en PRODUCTION + $path = DOC_WEB_LOCAL . 'fichiers/'; + if (!is_dir($path)) { mkdir($path); } + if (!empty($requetesql)) + { + if (!file_exists($path . $fichierCsv)) + { + if (file_exists('sql/'.$fichierSql)) + { + //Connexion mysql + $sql = file_get_contents('sql/'.$fichierSql); + require_once 'framework/common/mysql.php'; + $db = new WDB(); + $db->exportCSV($sql, $path . $fichierCsv, ',', "\n"); + } + } + + if (file_exists($path . $fichierCsv)) + { + $this->_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + //Distribution du fichier sur la sortie standard + list($nomFichier, $extFichier) = explode('.',$fichierCsv); + switch ($extFichier) + { + case 'png' : $content_type = 'image/png'; break; + case 'gif' : $content_type = 'image/gif'; break; + case 'jpeg': + case 'jpg' : $content_type = 'image/jpeg'; break; + case 'pdf' : $content_type = 'application/pdf'; break; + case 'csv' : $content_type = 'application/csv-tab-delimited-table'; break; + } + $this->getResponse()->setHeader('Content-Type', $content_type); + $contentDisposition = 'attachment'; + switch ($contentDisposition) + { + case 'inline': + $this->getResponse()->setHeader('Content-Disposition', 'inline'); + break; + case 'attachment': + $this->getResponse()->setHeader('Content-Disposition', "attachment; filename=\"$fichierCsv\""); + break; + } + + $data = file_get_contents($path . $fichierCsv); + + $this->getResponse()->setHeader('Content-Length', strlen($data)) + ->setHeader('Cache-Control', 'private, max-age=0, must-revalidate') + ->setHeader('Pragma', 'public') + ->setBody($data); + } + } else { + $this->view->assign('message', 'Paramètres incorrects !'); + } + } + +} \ No newline at end of file diff --git a/application/controllers/ServiceController.php b/application/controllers/ServiceController.php new file mode 100644 index 00000000..d68b56ed --- /dev/null +++ b/application/controllers/ServiceController.php @@ -0,0 +1,174 @@ +_helper->layout->disableLayout(); + $this->_helper->viewRenderer->setNoRender(); + + $request = $this->getRequest(); + + //Get the service name, make sure the string is in lower case + $serviceName = strtolower($request->getParam('service', 'Entreprise')); + + //ClassName and Directory with first letter capitalized + $serviceClassName = ucfirst($serviceName); + + //Customize service for customers + if ('clients' == $serviceName ) { + $client = strtolower($request->getParam('client', '')); + $clientClassName = ucfirst($client); + //Get list of customers + $clients = array(); + $listeClients = include APPLICATION_PATH . '/../library/WsScore/Clients/ClientsConfig.php'; + foreach ( $listeClients as $section => $params ){ + if ($params['actif']) { + $clients[$section] = $params; + } + } + if (!array_key_exists($client, $clients)){ + echo 'Service clients introuvable !'; + exit; + } + $configServiceVersions = $clients[$client]['versions']; + } + else + { + //Service versions + $services = include APPLICATION_PATH . '/../library/WsScore/ServicesConfig.php'; + $configServiceVersions = $services[$serviceName]['versions']; + } + + // Check versions + foreach( $configServiceVersions as $section => $params ) { + $serviceVersions[$section] = $params; + if ($params['defaut']) { + $defautVersion = $section; + } + } + $version = $request->getParam('version', 'v'.$defautVersion); + $version = substr($version, 1); + + // Version inexistante + if ( !array_key_exists($version, $serviceVersions) ) { + echo "Version inexistante."; + exit; + } + // Version désactivé + if ( !$serviceVersions[$version]['actif'] ) { + echo "Version désactivée."; + exit; + } + + // Charger les classes et les types pour le service suivant la version + if ('clients' == $serviceName) { + $pathServiceClassIni = 'WsScore/Clients/'.$clientClassName.'/v'.$version.'/Entreprise.ini'; + $pathServiceClassPhp = 'WsScore/Clients/'.$clientClassName.'/v'.$version.'/Entreprise.php'; + //Gestion du mode de génération du wsdl + if ( APPLICATION_ENV == 'development' + || array_key_exists('mode', $serviceVersions[$version]) + && $serviceVersions[$version]['mode']=='auto') { + $pathServiceUrl = 'clients/'.$client.'/v'.$version.'?wsdl-auto'; + } else { + $pathServiceUrl = 'clients/'.$client.'/v'.$version.'?wsdl'; + } + //On redéfini le nom du service + $serviceClassName = 'Entreprise'; + $fichierWsdl = $clientClassName.'-'.$serviceClassName.'-'.$version.'.wsdl'; + } else { + $pathServiceClassIni = 'WsScore/'.$serviceClassName.'/v'.$version.'/'.$serviceClassName.'.ini'; + $pathServiceClassPhp = 'WsScore/'.$serviceClassName.'/v'.$version.'/'.$serviceClassName.'.php'; + //Gestion du mode de génération du wsdl + if ( APPLICATION_ENV == 'development' + || array_key_exists('mode', $serviceVersions[$version]) + && $serviceVersions[$version]['mode']=='auto') { + $pathServiceUrl = $serviceName.'/v'.$version.'?wsdl-auto'; + } else { + $pathServiceUrl = $serviceName.'/v'.$version.'?wsdl'; + } + $fichierWsdl = $serviceClassName.'-'.$version.'.wsdl'; + } + + //Génération du tableau de mapping + $classmap = array(); + $wsConfig = new Zend_Config_Ini($pathServiceClassIni); + if ( $wsConfig->count()>0 ) { + foreach($wsConfig->Type->toArray() as $Type){ + $classmap[$Type] = $Type; + } + } + //Inclusion des classes de données + require_once $pathServiceClassPhp; + + // Fourniture du wsdl + if ( isset($_GET['wsdl']) && file_exists($fichierWsdl) ) { + + if (!headers_sent()) { + header('Content-Type: text/xml'); + } + echo file_get_contents($fichierWsdl); + + } elseif ( isset($_GET['wsdl']) && !file_exists($fichierWsdl) + || isset($_GET['wsdl-generate']) + || isset($_GET['wsdl-auto']) ) { + + // Définition du webservice + $wsdl = new Zend_Soap_AutoDiscover(); + $wsdl->setComplexTypeStrategy('Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence'); + $wsdl->setOperationBodyStyle( array('use' => 'literal') ); + $wsdl->setBindingStyle( array('style' => 'document') ); + $wsdl->setClass($serviceClassName); + + // Enregistrement du WSDL dans un fichier + if ( isset($_GET['wsdl-generate']) ) { + if (file_exists($fichierWsdl)) { + unlink($fichierWsdl); + } + $wsdl->dump($fichierWsdl); + echo "Le fichier $fichierWsdl a été généré"; + + //Génération/Fourniture du wsdl + } elseif (isset($_GET['wsdl']) && !file_exists($fichierWsdl)) { + $wsdl->dump($fichierWsdl); + if (!headers_sent()) { + header('Content-Type: text/xml'); + } + echo file_get_contents($fichierWsdl); + + // Envoi sur la sortie standard le wsdl sans enregistrement dans un fichier + } elseif ( isset($_GET['wsdl-auto']) ){ + $wsdl->handle(); + } + + // Fourniture du service + } else { + + // Traitement + if (APPLICATION_ENV == 'production' && file_exists($fichierWsdl)) { + $server = new Zend_Soap_Server($fichierWsdl); + } else { + $hostName = $this->getRequest()->getHttpHost(); + $server = new Zend_Soap_Server('http://'.$hostName.'/'.$pathServiceUrl); + } + + $server->setSoapFeatures(SOAP_USE_XSI_ARRAY_TYPE + SOAP_SINGLE_ELEMENT_ARRAYS); + $server->setClassmap($classmap); + $server->setEncoding('UTF-8'); + $server->registerFaultException(array('WsScores_Exception')); + $server->setWsiCompliant(true); + $server->setObject(new $serviceClassName()); + $server->handle(); + + //Pour débuggage ultime + $debug = false; + if ($debug){ + $request = $server->getLastRequest(); + file_put_contents(APPLICATION_PATH . '/../request.log', $request); + $response = $server->getLastResponse(); + file_put_contents(APPLICATION_PATH . '/../response.log', $response); + } + } + } +} \ No newline at end of file diff --git a/application/controllers/UserController.php b/application/controllers/UserController.php new file mode 100644 index 00000000..0cf5b9d1 --- /dev/null +++ b/application/controllers/UserController.php @@ -0,0 +1,67 @@ +view->navigation(); + $activeNav->removePages(); + } + + public function indexAction() + { + + } + + public function loginAction() + { + $this->view->headTitle()->append('Connexion'); + $form = new Form_Login(); + $this->view->form = $form; + $request = $this->getRequest(); + if ($request->isPost()) { + $formData = $request->getPost (); + if ($form->isValid($formData)) { + $login = $form->getValue('login'); + $pass = $form->getValue('pass'); + $auth = Zend_Auth::getInstance(); + $authAdapter = new Scores_AuthAdapter($login, $pass); + $result = $auth->authenticate($authAdapter); + if (!$result->isValid()){ + $this->view->message = ''; + foreach ($result->getMessages() as $message) { + $this->view->message.= $message."
message;?>
+Requete
+ +Réponse
+ + +Requete
+ +Réponse
+ \ No newline at end of file diff --git a/application/views/scripts/documentation/clients.phtml b/application/views/scripts/documentation/clients.phtml new file mode 100644 index 00000000..47598d03 --- /dev/null +++ b/application/views/scripts/documentation/clients.phtml @@ -0,0 +1,42 @@ +docMethod($method);?>
+Exemple : docExemple($method['name']);?>
+=$this->code?>diff --git a/application/views/scripts/documentation/erreur.phtml b/application/views/scripts/documentation/erreur.phtml new file mode 100644 index 00000000..55b7c354 --- /dev/null +++ b/application/views/scripts/documentation/erreur.phtml @@ -0,0 +1,10 @@ +
=$this->docMethod($method)?>
+Exemple : =$exemple?>
+ ++ Message: exception->getMessage() ?> +
+ +exception->getTraceAsString() ?> ++ +
request->getParams(), true) ?> ++ + + + diff --git a/application/views/scripts/footer.phtml b/application/views/scripts/footer.phtml new file mode 100644 index 00000000..b3d9bbc7 --- /dev/null +++ b/application/views/scripts/footer.phtml @@ -0,0 +1 @@ +WebService Scores & Décisions +
Taille maximale d'un fichier : =$this->filesize?>
+ + + ++Le WebService utilise une authentification http basique. +Il s'agit donc de transmettre comme paramètres d'authentification +
+http://{login}:{password}@url
+
+{password} est une chaine construite de cette façon md5({login}|{pass})
+ou {login} est l'identifiant fournit
+et {pass} le mot de passe fournit.
+
+Vous trouverez dans ces exemples les prérequis pour s'authentifier et suivant
+les outils et langage la possibilité de générer le code à partir du WSDL.
+Exemple : =$this->docExemple('authentication')?>
+
Notre service web a été testé avec ces langages/librairies
++Pour toutes remarques ou question merci d'adresser un email à +support@scores-decisions.com +
\ No newline at end of file diff --git a/application/views/scripts/main.phtml b/application/views/scripts/main.phtml new file mode 100644 index 00000000..5e21feb3 --- /dev/null +++ b/application/views/scripts/main.phtml @@ -0,0 +1,23 @@ +doctype(); ?> + + + headMeta(); ?> + headTitle(); ?> + headStyle(); ?> + headLink(); ?> + headScript(); ?> + + +Identifiez-vous pour accèder aux ressources
+=$this->form?> \ No newline at end of file diff --git a/application/views/scripts/user/logout.phtml b/application/views/scripts/user/logout.phtml new file mode 100644 index 00000000..dd7d8f21 --- /dev/null +++ b/application/views/scripts/user/logout.phtml @@ -0,0 +1 @@ +Vous avez été déconnecté. \ No newline at end of file diff --git a/docs/MODIFICATION_ZEND.txt b/docs/MODIFICATION_ZEND.txt new file mode 100644 index 00000000..96ea4609 --- /dev/null +++ b/docs/MODIFICATION_ZEND.txt @@ -0,0 +1,55 @@ +Le fichier Zend/Soap/Wsdl/Strategy/DefaultComplexType.php a été modifié pour +générer la documentation automatiquement. + +/** + * Traitement éléments de documentation à placer dans le WSDL + * Supprime les retours chariots. + * Récupére les éléments de documentation + */ +$comment = ''; +$docBlock = preg_replace('/\n/', '', $property->getDocComment() ); +if (preg_match('/\/\*\*(.+) \* @var\s+[^\s]+\s+(?:\*|@)/m', $docBlock, $docBlockMatches)) { + $comment.= preg_replace( + array('/\r/', '/\t\s\*/'), + array('', ''), $docBlockMatches[1] + ); +} + +/** + * Ajout des éléments de documentation au WSDL + */ +if (!empty($comment)){ + $annotation = $dom->createElement('xsd:annotation'); + $documentation = $dom->createElement('xsd:documentation', trim($comment)); + $annotation->appendChild($documentation); + $element->appendChild($annotation); +} + +===============================================================================> + +Le fichier Zend/Soap/AutoDiscover.php a été modifié +function _addFunctionToWsdl + +$sequenceElement = array( + 'name' => $param->getName(), + 'type' => $wsdl->getType($param->getType()), + 'desc' => $param->getDescription() +); + +===============================================================================> + +Le fichier Zend/Soap/Wsdl.php a été modifié +function _parseElement + + } elseif ($key == 'desc') { + if (!empty($value)) { + $annotation = $this->_dom->createElement('xsd:annotation'); + $documentation = $this->_dom->createElement('xsd:documentation', trim($value)); + $annotation->appendChild($documentation); + $elementXml->appendChild($annotation); + } +} else { + + + + diff --git a/docs/README.txt b/docs/README.txt new file mode 100644 index 00000000..0dfb5d00 --- /dev/null +++ b/docs/README.txt @@ -0,0 +1,179 @@ +README +====== +Le webservice est basé sur le ZendFramework pour générer les WSDLs. + +Fichier de configuration +======================== +La configuration est décomposé en plusieurs fichiers, +avec adaptation suivant la machine +- mysql.php +- smtp.php +- sphinx.php +- stockage.php + +sans adaptation suivant la machine +- partenaires.php + +Fonctionnement +============== +Obtenir les WSDL +Pour le service Entreprise + + - En mode développement : http://hostname/entreprise/version?wsdl-auto + - Générer le WSDL : http://hostname/entreprise/version?wsdl-generate + - Utiliser le WSDL généré : http://hostname/entreprise/version?wsdl + +Pour le service Interne + + http://hostname/interne/version?wsdl + +Pour les clients + + http://hostname/clients/nom_du_client/version?wsdl + +N.B : Le fichier WSDL est généré automatiquement en appelant +http://hostname/service?wsdl afin de ne pas provoquer d'erreur +après une mise en production + +Pour définir le mode (vhost d'apache) + SetEnv APPLICATION_ENV "development" + SetEnv APPLICATION_ENV "production" + SetEnv APPLICATION_ENV "staging" + +En appelant l'url http://hostname/service, le contoller de l'application, +"service" est automatiquement utiliser. +Tout ce qui est visible dans la class est utilisé par le controller et se +retrouve visible dans le service (wsdl, requête) + +Si des fonctions ne doivent pas être rendu visible il faut donc les séparer +dans un autre controller utilisant une autre class. + + +Documentation des méthodes et ajout spécial +=========================================== + +La documentation est géneré en automatique. + +Voici comment définir simplement la documentation d'une méthode + + /** + * Retourne les informations identitaires de l'entreprise ou de l'établissement demandé + * @param string $key Siren de l'entreprise ou siret de l'établissement + * @return Identite + */ + public function test($key) + { + + } + +Attention ces informations servent aussi pour la structure du WSDL + +Pour spécifier un lien vers un fichier ou pour générer un fichier depuis une +requête SQL à partir de la documentation du service. +Ajouter dans le docblock : + - Pour un fichier + @ref fichier:libellé:{nom_du_fichier.ext} + - Pour une requête SQL + @ref mysql:libellé:{nom_du_fichier.sql} + +Les fichiers a télécharger sont à placer dans le répértoire public/fichier et +les fichiers sql dans public/sql + +Pour spécifier des éléments de taille (non pris en compte sur le WSDL) + @xsd minLength=9 + @xsd maxLength=15 + +Configuration PHP +================= +apt-get install php5-mysql +apt-get install php-apc +apt-get install php5-curl +apt-get install php5-xmlrpc + +Paquet PEAR +- Mail +- Mail_Mime + +WKHTMLTOPDF +=========== +apt-get install libXrender1 +apt-get install libfontconfig + +Configuration VHOST +=================== +a2enmod rewrite + +Exemple de vhost en mode développement + +Fiche Etablissement');
+ if ($pos>0)
+ $tabRet['typeEtablissement']='secondaire';
+
+ $pos=strpos($pageHtml, '
+ +
+ +
+
+
+ + +
| ', $dir); + $typeDir=trim(strip_tags($tabTmp[0])); + $nomDir=trim(strip_tags($tabTmp[1])); + if ($typeDir<>'' && $typeDir<>'Date de création' && $typeDir<>'Forme juridique' && $typeDir<>'Cotation en bourse' + && $typeDir<>'Effectif société' && $typeDir<>'Société inactive' && $typeDir<>'Activité' + && $typeDir<>'Sigle' && $typeDir<>'Enseigne' + && substr($typeDir, 0, 8) <>'Capital ' ) + { + //$tabDir['Produits'].=$produit.'/'; + //$produit=str_replace(' ','_',$produit); + $tabRet['Dirigeant'.$nbDir.'Type']=trim($typeDir); + $tabTmp=explode(' ', $nomDir); + $tabRet['Dirigeant'.$nbDir.'Genre']=trim($tabTmp[0]); + $tabRet['Dirigeant'.$nbDir.'Prenom']=trim($tabTmp[1]); + $tabRet['Dirigeant'.$nbDir.'Nom']=trim($tabTmp[2]); + $nbDir++; + } + } + $tabRet['NbDirigeants']=$nbDir-1; + + // Liens Financiers + $strTmp=@getTextInHtml($pageHtml, ' | LIENS FINANCIERS | ', '', ' |
Produits disponibles |
+
Référentiels + d'avril 2006
+*/ + + } ?> \ No newline at end of file diff --git a/library/Metier/common/paramCotation.inc b/library/Metier/common/paramCotation.inc new file mode 100644 index 00000000..6fcc5416 --- /dev/null +++ b/library/Metier/common/paramCotation.inc @@ -0,0 +1,170 @@ +tabNotation['A+']=array('Exceptionnel', 'A3++', 'Aaa' ,'AAA' ,'0.001'); + $this->tabNotation['A'] =array('Excellent', 'A3+', 'Aa1 Aa2 Aa3' ,'AA+ AA AA-' ,'0.01'); + $this->tabNotation['B+']=array('Très bon', '3++', 'A1' ,'A+' ,'0.02'); + $this->tabNotation['B'] =array('Bon', '3+', 'A2 A3' ,'A A-' ,'0.04'); + $this->tabNotation['C+']=array('Assez bon', '3', 'Baa1' ,'BBB+' ,'0.15'); + $this->tabNotation['C'] =array('Acceptable', '3', 'Baa2' ,'BBB' ,'0.30'); + $this->tabNotation['C-']=array('Moyen', '3', 'Baa3' ,'BBB-' ,'0.60'); + $this->tabNotation['D+']=array('Passable', '4+', 'Ba1' ,'BB+' ,'0.90'); + $this->tabNotation['D'] =array('Médiocre', '4', 'Ba2' ,'BB' ,'1.25'); + $this->tabNotation['D-']=array('Très médiocre', '4', 'Ba3' ,'BB-' ,'1.60'); + $this->tabNotation['E+']=array('Mauvais (sous surveillance)', '5', 'B1 B2 B3', 'B+ B B-', '5.00'); + $this->tabNotation['E'] =array('Très mauvais (sensible, sans incident)', '6', 'Caa', 'CCC', '14.00'); + $this->tabNotation['E-']=array('Très mauvais (sensible avec incidents)', '8', 'Ca C', 'CC C', '17.00'); + $this->tabNotation['F'] =array('En défaut, hors procédures judiciaires (douteux)', '8 9', 'D', 'D', 'Défaut'); + $this->tabNotation['Z'] =array('En défaut, avec procédures judiciaires ou contentieuses (douteux)', 'P', '', '', 'Défaut'); + + $this->tabLibActivite[0]=''; + $this->tabLibActivite[15]='Industries Alimentaires : Collecte Appro'; + $this->tabLibActivite[3]='Industries Alimentaires : Collecte et 1ère transformation'; + $this->tabLibActivite[5]='Industries Alimentaires : Eaux de vie et Champagne'; + $this->tabLibActivite[2]='Industries Alimentaires : Autres activités'; + $this->tabLibActivite[6]='Industries extractives / Production Distribution : Énergie Eau'; + $this->tabLibActivite[7]='Construction - BTP'; + $this->tabLibActivite[1]='Industries Manufacturières'; + $this->tabLibActivite[8]='Négoce'; + $this->tabLibActivite[4]='Commerce de Gros'; + $this->tabLibActivite[9]='Commerce Distribution'; + $this->tabLibActivite[10]='Grande Distribution'; + $this->tabLibActivite[12]='Transports'; + $this->tabLibActivite[13]='Media Technologie de l\'information'; + $this->tabLibActivite[14]='Services'; + $this->tabLibActivite[11]='Hôtellerie et Loisirs / Activités immobilières'; + $this->tabLibActivite[16]='Banques. Assurances. Activités financières'; + $this->tabLibActivite[17]='Agriculture. Sylviculture. Pêche. Aquaculture'; + + $this->tabActivite[15]=array('512A'); + $this->tabActivite[3]=array('151A','151C','152','153E','155','157','159G','159J','159N','159Q'); + $this->tabActivite[5]=array('159A','159F'); + $this->tabActivite[2]=array('151E','151F','153A','153C','153F','154','156','158','159B','159D','159L','159S','159T'); + $this->tabActivite[6]=array('11','10','12','13','14','401','402','403','410'); + $this->tabActivite[7]=array('451','452','453','454','455'); + $this->tabActivite[1]=array('251','252','241','242','243','245','246','247','261','262','263','264','265','266','267','268','244','297','300','311','312','313','314','315','316','321','322','323','17','18','19','20','21','271','272','273','274','275','281','282','283','284','285','286','287','291','292','293','294','295','296','341','342','343','353','351','352','354','355','223','331','332','333','334','335','361','362','363','364','365','366','231','232','233','222','371','372'); + $this->tabActivite[8]=array(); + $this->tabActivite[4]=array('511A','511N','511P','512C','512E','512G','512J','513','511C','515A','515C','511E','511G','511J','511L','511R','511T','511U','514','515E','515F','515H','515J','515L','515N','515Q','516','517'); + $this->tabActivite[9]=array('501','502','503','504','505','521A','521B','521C','521J','522','523','524A','524C','524E','524F','524H','524J','524L','524N','524R','524T','524U','524V','524W','524X','524Y','524Z','525','526'); + $this->tabActivite[10]=array('521D','521E','521F','521H','524P'); + $this->tabActivite[12]=array('621','622','623','611','612','602','603','631','632','634','634B','634C','634A','641'); + $this->tabActivite[13]=array('221','722','721','723','724','725','726','924','642','922','921'); + $this->tabActivite[14]=array('703','712E','711','712A','713','714','712C','741A','741C','741E','741G','742','743','741J','744','745','746','747','748','900','633','801','802','803','804','851','852','853','930','911','912','913','527','950'); + $this->tabActivite[11]=array('923','925','926','927','551','552','553','554','555','702'); + $this->tabActivite[16]=array('651','660','672','652E','652A','652C','652F','671'); + $this->tabActivite[17]=array('751','990','752','990','701'); + + $this->tabR[1][0]=array(); + $this->tabR[1][1]=array('0:15.5','15.5:21.7','21.7:25','25:29.1','29.1:33.4','33.4:37','37:40','40:42.6','42.6:44.9','44.9:100'); + $this->tabR[1][2]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100'); + $this->tabR[1][3]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100'); + $this->tabR[1][4]=array('0:8.7','8.7:12.8','12.8:15','15:17.7','17.7:20.6','20.6:23','23:25','25:26.7','26.7:28.3','28.3:100'); + $this->tabR[1][5]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100'); + $this->tabR[1][6]=array('0:20.5','20.5:26.7','26.7:30','30:34.1','34.1:38.4','38.4:42','42:45','45:47.6','47.6:49.9','49.9:100'); + $this->tabR[1][7]=array('0:13.7','13.7:17.8','17.8:20','20:22.7','22.7:25.6','25.6:28','28:30','30:31.7','31.7:33.3','33.3:100'); + $this->tabR[1][8]=array('0:3.7','3.7:7.8','7.8:10','10:12.7','12.7:15.6','15.6:18','18:20','20:21.7','21.7:23.3','23.3:100'); + $this->tabR[1][9]=array('0:13.7','13.7:17.8','17.8:20','20:22.7','22.7:25.6','25.6:28','28:30','30:31.7','31.7:33.3','33.3:100'); + $this->tabR[1][10]=array('0:5.7','5.7:9.8','9.8:12','12:14.7','14.7:17.6','17.6:20','20:22','22:23.7','23.7:25.3','25.3:100'); + $this->tabR[1][11]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100'); + $this->tabR[1][12]=array('0:13.7','13.7:17.8','17.8:20','20:22.7','22.7:25.6','25.6:28','28:30','30:31.7','31.7:33.3','33.3:100'); + $this->tabR[1][13]=array('0:23.7','23.7:27.8','27.8:30','30:32.7','32.7:35.6','35.6:38','38:40','40:41.7','41.7:43.3','43.3:100'); + $this->tabR[1][14]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100'); + $this->tabR[1][15]=array('0:15.5','15.5:21.7','21.7:25','25:29.1','29.1:33.4','33.4:37','37:40','40:42.6','42.6:44.9','44.9:100'); + $this->tabR[1][16]=array('0:6.8','6.8:8.9','8.9:10','10:11.4','11.4:12.8','12.8:14','14:15','15:15.9','15.9:16.6','16.6:100'); + $this->tabR[1][17]=array('0:18.7','18.7:22.8','22.8:25','25:27.7','27.7:30.6','30.6:33','33:35','35:36.7','36.7:38.3','38.3:100'); + + $this->tabR[2][0]=array(); + $this->tabR[2][1]=array('1.8:','1.6:1.8','1.5:1.6','1.4:1,5','1.2:1.4','1.0:1.2','0.9:1.0','0.8:0,9','0.7:0,8','0:0.7'); + $this->tabR[2][2]=array('2.2:','1.9:2.2','1.8:1.9','1.6:1.8','1.4:1.6','1.2:1.4','1.0:1.2','0.9:1.0','0.7:0.9','0:0.7'); + $this->tabR[2][3]=array('2.2:','1.9:2.2','1.8:1.9','1.6:1.8','1.4:1.6','1.2:1.4','1.0:1.2','0.9:1.0','0.7:0.9','0:0.7'); + $this->tabR[2][4]=array('3.0:','2.7:3.0','2.5:2.7','2.3:2.5','2.0:2.3','1.7:2.0','1.5:1.7','1.3:1.5','1.1:1.3','0:1.1'); + $this->tabR[2][5]=array('2.6:','2.4:2.6','2.2:2.4','2.0:2.2','1.7:2.0','1.5:1.7','1.3:1.5','1.1:1.3','1.0:1.1','0:1'); + $this->tabR[2][6]=array('1.7:','1.6:1.7','1.5:1.6','1.4:1.5','1.2:1.4','1.1:1.2','1.0:1.1','0.9:1.0','0.8:0.9','0:0.8'); + $this->tabR[2][7]=array('1.5:','1.4:1.5','1.3:1.4','1.1:1.3','1.0:1.2','0.9:1.0','0.8:0.9','0.7:0.8','0.6:0.7','0:0.6'); + $this->tabR[2][8]=array('10.1:','8.8:10.1','8:8.8','7:8','5.8:7','4.8:5.8','4:4.8','3.3:4','2.8:3.3','0:2.8'); + $this->tabR[2][9]=array('3:','2.7:3','2.5:2.7','2.3:2.5','2:2.3','1.7:2','1.5:1.7','1.3:1.5','1.1:1.3','0:1.1'); + $this->tabR[2][10]=array('3.8:','3.3:3.8','3.0:3.3','2.6:3.0','2.2:2.6','1.8:2.2','1.5:1.8','1.2:1.5','1.0:1.2','0:1'); + $this->tabR[2][11]=array('2.3:','2.1:2.3','2:2.1','1.8:2','1.6:1.8','1.5:1.6','1.3:1.5','1.2:1.3','1:1.2','0:1'); + $this->tabR[2][12]=array('2.3:','2.1:2.3','2:2.1','1.8:2','1.6:1.8','1.5:1.6','1.3:1.5','1.2:1.3','1:1.2','0:1'); + $this->tabR[2][13]=array('1.8:','1.6:1.8','1.5:1.6','1.4:1.5','1.2:1.4','1:1.2','0.9:1','0.8:0.9','0.7:0.8','0:0.7'); + $this->tabR[2][14]=array('1.8:','1.6:1.8','1.5:1.6','1.4:1.5','1.2:1.4','1:1.2','0.9:1','0.8:0.9','0.7:0.8','0:0.7'); + $this->tabR[2][15]=array('2.2:','1.9:2.2','1.7:1.9','1.5:1.7','1.2:1.5','1.0:1.2','0.8:1.0','0.7:0.8','0.5:0.7','0:0.5'); + $this->tabR[2][16]=array('10.1:','8.8:10.1','8:8.8','7:8','5.8:7','4.8:5.8','4:4.8','3.3:4','2.8:3.3','0:2.8'); + $this->tabR[2][17]=array('2.2:','1.9:2.2','1.8:1.9','1.6:1.8','1.4:1.6','1.2:1.4','1:1.2','0.9:1','0.7:0.9','0:0.7'); + + $this->tabR[3][0]=array(); + $this->tabR[3][1]=array('4.4:','4:4.4','3.8:4','3.5:3.8','3.1:3.5','2.8:3.1','2.5:2.8','2.2:2.5','2:2.2','0:2'); + $this->tabR[3][2]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + $this->tabR[3][3]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + $this->tabR[3][4]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + $this->tabR[3][5]=array('8.6:','7.9:8.6','7.5:7.9','6.9:7.5','6.2:6.9','5.6:6.2','5:5.6','4.5:5','4:4.5','0:4'); + $this->tabR[3][6]=array('4.4:','4:4.4','3.8:4','3.5:3.8','3.1:3.5','2.8:3.1','2.5:2.8','2.2:2.5','2:2.2','0:2'); + $this->tabR[3][7]=array('4.4:','4:4.4','3.8:4','3.5:3.8','3.1:3.5','2.8:3.1','2.5:2.8','2.2:2.5','2:2.2','0:2'); + $this->tabR[3][8]=array('10.9:','9.7:10.9','9:9.7','8:9','6.8:8','5.8:6.8','5:5.8','4.3:5','3.7:4.3','0:3.7'); + $this->tabR[3][9]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + $this->tabR[3][10]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + $this->tabR[3][11]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + $this->tabR[3][12]=array('5.9:','5.4:5.9','5:5.4','4.5:5','3.9:4.5','3.4:3.9','3:3.4','2.6:3','2.3:2.6','0:2.3'); + $this->tabR[3][13]=array('4.2:','3.8:4.2','3.5:3.8','3.1:3.5','2.7:3.1','2.3:2.7','2:2.3','1.7:2','1.5:1.7','0:1.5'); + $this->tabR[3][14]=array('4.2:','3.8:4.2','3.5:3.8','3.1:3.5','2.7:3.1','2.3:2.7','2:2.3','1.7:2','1.5:1.7','0:1.5'); + $this->tabR[3][15]=array('6.9:','6.3:6.9','6.0:6.3','5.5:6.0','5.0:5.5','4.5:5.0','4.0:4.5','3.6:4.0','3.2:3.6','0:3.2'); + $this->tabR[3][16]=array('10.9:','9.7:10.9','9:9.7','8:9','6.8:8','5.8:6.8','5:5.8','4.3:5','3.7:4.3','0:3.7'); + $this->tabR[3][17]=array('5.2:','4.7:5.2','4.5:4.7','4.1:4.5','3.7:4.1','3.3:3.7','3:3.3','2.7:3','2.4:2.7','0:2.4'); + + $this->tabR[4][0]=array(); + $this->tabR[4][1]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][2]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][3]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][4]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][5]=array('0:1.36','1.36:1.44','1.44:1.5','1.5:1.58','1.58:1.71','1.71:1.85','1.85:2','2:2.16','2.16:2.33','2.33:'); + $this->tabR[4][6]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][7]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][8]=array('0:1.1','1.1:1.2','1.2:1.3','1.3:1.4','1.4:1.6','1.6:1.8','1.8:2','2:2.2','2.2:2.5','2.5:'); + $this->tabR[4][9]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][10]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][11]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][12]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + $this->tabR[4][13]=array('0:2.4','2.4:2.7','2.7:3','3:3.4','3.4:4.1','4.1:5','5:6','6:7.2','7.2:8.7','8.7:'); + $this->tabR[4][14]=array('0:2.4','2.4:2.7','2.7:3','3:3.4','3.4:4.1','4.1:5','5:6','6:7.2','7.2:8.7','8.7:'); + $this->tabR[4][15]=array('0:2.9','2.9:3.4','3.4:3.7','3.7:4.3','4.3:5.2','5.2:6.2','6.2:7.5','7.5:9.1','9.1:10.9','10.9:'); + $this->tabR[4][16]=array('0:1.1','1.1:1.2','1.2:1.3','1.3:1.4','1.4:1.6','1.6:1.8','1.8:2','2:2.2','2.2:2.5','2.5:'); + $this->tabR[4][17]=array('0:2','2:2.3','2.3:2.5','2.5:2.9','2.9:3.5','3.5:4.2','4.2:5','5:6','6:7.2','7.2:'); + + $this->tabR[5][0]=array(); + $this->tabR[5][1]=array('-99:-40','-40:-34','-34:-30','-30:-24','-24:-16','-16:-8','-8:0','0:8.1','8.1:16.1','16.1:'); + $this->tabR[5][2]=array('-99:-40','-40:-34','-34:-30','-30:-24','-24:-16','-16:-8','-8:0','0:8.1','8.1:16.1','16.1:'); + $this->tabR[5][3]=array('-99:-40','-40:-34','-34:-30','-30:-24','-24:-16','-16:-8','-8:0','0:8.1','8.1:16.1','16.1:'); + $this->tabR[5][4]=array('-99:-16.7','-16.7:-12.7','-12.7:-10','-10:-6','-6:-0.7','-0.7:4.7','4.7:10','10:15.3','15.3:20.7','20.7:'); + $this->tabR[5][5]=array('-999:-420','-420:-384','-384:-360','-360:-324','-324:-276','-276:-228','-228:-180','-180:-132','-132:-84','-84:'); + $this->tabR[5][6]=array('-99:-40','-40:-34','-34:-30','-30:-24','-24:-16','-16:-8','-8:0','0:8.1','8.1:16.1','16.1:'); + $this->tabR[5][7]=array('-99:-30','-30:-24','-24:-20','-20:-14','-14:-6','-6:2','2:10','10:18','18:26','26:'); + $this->tabR[5][8]=array('-99:-41.7','-41.7:-34.7','-34.7:-30','-30:-23','-23:-13.7','-13.7:-4.3','-4.3:5','5:14.3','14.3:23.7','23.7:'); + $this->tabR[5][9]=array('-99:-16.7','-16.7:-12.7','-12.7:-10','-10:-6','-6:-0.7','-0.7:4.7','4.7:10','10:15.3','15.3:20.7','20.7:'); + $this->tabR[5][10]=array('-99:-5','-5:-2','-2:0','0:3','3:7','7:11','11:15','15:19','19:23','23:'); + $this->tabR[5][11]=array('-99:-6.7','-6.7:-2.7','-2.7:0','0:4','4:9.3','9.3:14.7','14.7:20','20:25.3','25.3:30.7','30.7:'); + $this->tabR[5][12]=array('-99:-6.7','-6.7:-2.7','-2.7:0','0:4','4:9.3','9.3:14.7','14.7:20','20:25.3','25.3:30.7','30.7:'); + $this->tabR[5][13]=array('-99:-6.7','-6.7:-2.7','-2.7:0','0:4','4:9.3','9.3:14.7','14.7:20','20:25.3','25.3:30.7','30.7:'); + $this->tabR[5][14]=array('-99:-6.7','-6.7:-2.7','-2.7:0','0:4','4:9.3','9.3:14.7','14.7:20','20:25.3','25.3:30.7','30.7:'); + $this->tabR[5][15]=array('-99:-38.3','-38.3:-36.3','-36.3:-35.0','-35:-33','-33.0:-30','-30:-27.7','-27.7:-25.0','-25.0:-22.3','-22.3:-19.7','-19.7:'); + $this->tabR[5][16]=array('-99:-41.7','-41.7:-34.7','-34.7:-30','-30:-23','-23:-13.7','-13.7:-4.3','-4.3:5','5:14.3','14.3:23.7','23.7:'); + $this->tabR[5][17]=array(':-58.3','-58.3:53.3','-53.3:-50','-50:-45','-45:-38.3','-38.3:-31.7','-31.7:-25','-25:-18.3','-18.3:-11.7','-11.7:'); + + $this->tabR[6][0]=array(); + $this->tabR[6][1]=array('0:6','6:6.6','6.6:7','7:7.6','7.6:8.4','8.4:9.2','9.2:10','10:10.8','10.8:11.6','11.6:'); + $this->tabR[6][2]=array('0:6','6:6.6','6.6:7','7:7.6','7.6:8.4','8.4:9.2','9.2:10','10:10.8','10.8:11.6','11.6:'); + $this->tabR[6][3]=array('0:1.5','1.5:2.1','2.1:2.5','2.5:3.1','3.1:3.9','3.9:4.7','4.7:5.5','5.5:6.3','6.3:7.1','7.1:'); + $this->tabR[6][4]=array('0:1.8','1.8:2.2','2.2:2.5','2.5:2.9','2.9:3.4','3.4:4','4:4.5','4.5:5','5:5.6','5.6:'); + $this->tabR[6][5]=array('0:6.7','6.7:7.5','7.5:8','8:8.8','8.8:9.9','9.9:10.9','10.9:12','12:13.1','13.1:14.1','14.1:'); + $this->tabR[6][6]=array('0:7.7','7.7:8.5','8.5:9','9:9.8','9.8:10.9','10.9:11.9','11.9:13','13:14.1','14.1:15.1','15.1:'); + $this->tabR[6][7]=array('0:3','3:3.6','3.6:4','4:4.6','4.6:5.4','5.4:6.2','6.2:7','7:7.8','7.8:8.6','8.6:'); + $this->tabR[6][8]=array('0:1.3','1.3:1.7','1.7:2','2:2.4','2.4:2.9','2.9:3.5','3.5:4','4:4.5','4.5:5.1','5.1:'); + $this->tabR[6][9]=array('0:1.8','1.8:2.2','2.2:2.5','2.5:2.9','2.9:3.4','3.4:4','4:4.5','4.5:5','5:5.6','5.6:'); + $this->tabR[6][10]=array('0:1.3','1.3:1.7','1.7:2','2:2.4','2.4:2.9','2.9:3.5','3.5:4','4:4.5','4.5:5.1','5.1:'); + $this->tabR[6][11]=array('0:8.3','8.3:9.3','9.3:10','10:11','11:12.3','12.3:13.7','13.7:15','15:16.3','16.3:17.7','17.7:'); + $this->tabR[6][12]=array('0:4.7','4.7:5.5','5.5:6','6:6.8','6.8:7.9','7.9:8.9','8.9:10','10:11.1','11.1:12.1','12.1:'); + $this->tabR[6][13]=array('0:3','3:4.8','4.8:6','6:7.8','7.8:10.2','10.2:12.6','12.6:15','15:17.4','17.4:19.8','19.8:'); + $this->tabR[6][14]=array('0:3','3:4.8','4.8:6','6:7.8','7.8:10.2','10.2:12.6','12.6:15','15:17.4','17.4:19.8','19.8:'); + $this->tabR[6][15]=array('0:2','2:2.3','2.3:2.5','2.5:2.8','2.8:3.2','3.2:3.6','3.6:4.0','4.0:4.4','4.4:4.8','4.8:'); + $this->tabR[6][16]=array('0:1.7','1.7:1.9','1.9:2','2:2.2','2.2:2.5','2.5:2.7','2.7:3','3:3.3','3.3:3.5','3.5:'); + $this->tabR[6][17]=array('0:4.7','4.7:5.5','5.5:6','6:6.8','6.8:7.9','7.9:8.9','8.9:10','10:11.1','11.1:12.1','12.1:'); + + ?> \ No newline at end of file diff --git a/library/Metier/common/rncs.class.php b/library/Metier/common/rncs.class.php new file mode 100644 index 00000000..cc0c0025 --- /dev/null +++ b/library/Metier/common/rncs.class.php @@ -0,0 +1,9 @@ + + class Rncs { + + function Rncs () {} + + + + } + ?> \ No newline at end of file diff --git a/library/Metier/conversion/bilAltares.php b/library/Metier/conversion/bilAltares.php new file mode 100644 index 00000000..530df221 --- /dev/null +++ b/library/Metier/conversion/bilAltares.php @@ -0,0 +1,795 @@ +'CR', + 11=>'CR', + 13=>'CR', + 14=>'CR', + 15=>'CR', + 16=>'CR', + 17=>'CR', + 18=>'CR', + 19=>'CR', + 2=>'VT', + 21=>'VT', + 22=>'VT', + 24=>'VT', + 25=>'VT', + 3=>'CE', + 31=>'ME', + 32=>'ME', + 33=>'ME', + 34=>'ME', + 35=>'Rec', + 36=>'MAF', + 37=>'LG', + 38=>'LG', + 39=>'MD', + 4=>'RD', + 41=>'DIS', + 42=>'FLG', + 51=>'RJ', + 52=>'RJ', + 53=>'RA', + 56=>'PIE', + 57=>'SAUVJ', + 58=>'SAUVP', + 59=>'RR', + 6=>'R&L', + 61=>'LB', + 62=>'LJ', + 63=>'FP', + 64=>'INT', + 65=>'LQ', + 69=>'RL', + 7=>'Suite', + 71=>'SRJ', + 72=>'SRLJ', + 73=>'SP', + 74=>'AP', + 75=>'MP', + 76=>'EP', + 77=>'PRO', + 78=>'DC', + 79=>'CIA', + 8=>'INFR', + 91=>'DC', + 92=>'CP', + ); + +$tabEven2SO=array( // PROCOL + 1010=>92, // Déclaration de cessation de paiement + 1050=>7, // Homologation de la conciliation + 1055=>7, // Résolution de la conciliation + 1100=>57, // Jugement de sauvegarde + 1101=>58, // Plan de sauvegarde + 1200=>52, // Redressement Judiciaire + 1201=>52, // Conversion sauvegarde en Redressement Judiciaire + 1202=>75, // Renouv. Periode Observation + 1203=>78, // Avis de dépot de l'état de collocation + 1204=>78, // Dépôt des créances + 1205=>78, + 1206=>78, + 1207=>53, // Règlemement amiable + 1208=>78, + 1209=>51, // Règlement Judiciaire + 1210=>77, // Production + 1211=>52, // Redressement Judiciaire par extension au(x) gérant(s) + 1212=>69, // Rectif ou Annul.LJ + 1214=>78, // Avis de dépôt de l'état des créances (Loi de 1985) + 1215=>7, // Jugement de désignation des organes de la procédure + 1216=>78, // Autre avis de dépôt + 1300=>62, // Conversion Redressement Judiciaire en Liquidation + 1301=>62, // Ouverture Liquidation Judiciaire + 1302=>66, // Ouverture Liquidation Judiciaire Simplifiée + 1303=>62, // Ouverture Liquidation Judiciaire sur résolution + 1304=>62, // Réouverture Liquidation Judiciaire + 1305=>62, // Liquidation Judiciaire + 1306=>66, // Liquidation Judiciaire simplifiée + 1307=>62, // Conversion sauvegarde en Liquidation Judiciaire + 1308=>62, // Fin du régime de Liquidation Judiciaire Simplifiée + 1309=>62, // Conversion Liquidation Judiciaire en Liquidation + 1310=>56, // Procédure d'Insolvabilité Européenne + 1311=>62, // Liquidation Judiciaire par extension au(x) gérants + 1312=>62, // Liquidation Judiciaire avec continuation d'exploitation + 1313=>62, // Liquidation Judiciaire sans remise des accessoires + 1346=>7, // Procédure d'insolvabilité (Règlement 1346/2000 du Conseil Européen) + 1400=>7, // Nomination d'un administrateur judiciaire + 1401=>7, // Nomination d'un mandataire judiciaire + 1402=>7, // Nomination d'un représentant des créanciers + 1403=>7, // Nominnation/Remplacement de commissaire à l'exécution du plan + 1404=>7, // Prolongement de la mission du commissaire à l'exécution du plan + 1405=>7, // Nomination d'un juge commissaire + 1406=>7, // Changement de SYNDIC + 1407=>75, // Modif. de Plan + 1408=>75, // Modification du plan de cession + 1409=>75, // Modif. de de continuation + 1410=>75, // Suite de jugement/règlement/liquidation + 1411=>75, // Arrêt du plan de cession + 1412=>75, // Arrêt du plan de cession partielle + 1413=>75, // Arrêt du plan de continuation + 1414=>75, // Arrêt du plan de redressement + 1415=>75, // Prolongement du plan cession + 1416=>75, // Jugement constatant la bonne exécution du plan + 1417=>62, // Jugement d'extension de liquidation judiciaire + 1418=>52, // Jugement d'extension d'une procédure de redressement judiciaire + 1419=>57, // Jugement d'extension d'une procédure de sauvegarde + 1420=>7, // Nomination d'un liquidateur judiciaire + 1421=>7, // Jugement prorogeant le plan de redressement + 1425=>7, // Plan de cession avec location gérance + 1430=>7, // Jugement autorisant la poursuite d'activité + 1431=>7, // Jugement de cessation partielle d'activité + 1435=>7, // Suspension de l'exécution provisoire + 1436=>7, // Suspension provisoire des poursuites + 1440=>7, // Jugement accordant un délai pour déposer la liste des créances + 1445=>7, // Concordat + 1450=>92, //Cessation paiement + 1455=>7, // Jugement arrêtant le plan d'apurement du passif + 1460=>7, // Homologation du plan + 1470=>7, // Fin de mission d'administrateur judiciaire + 1480=>7, // Jugement ordonnant la jonction des procédures + 1500=>79, // Clôture de la procédure + 1501=>79, // Clôture de la procédure après cession totale + 1502=>76, // Clôture de la procédure pour extinction du passif + 1503=>79, // Cloture insuf.Actif + 1504=>79, // Clôture sauvegarde pour absence de projet de plan + 1505=>74, // Appel de jugement + 1506=>59, // Rectif ou Annulation RJ + 1507=>74, // Appel de jugement + 1508=>7, // Extinction du plan de sauvegarde + 1509=>7, // Extinction du plan de redressement + 1510=>74, // Rejet du plan + 1511=>7, // Résolution du plan de cession + 1512=>7, // Résolution du plan de continuation + 1513=>7, // Résolution du plan de sauvegarde + 1515=>74, // Arrêt divers + 1517=>59, // Rectification d'une erreur matérielle + 1520=>7, // Ordonnance + 1525=>74, // Appel du ministère public + 1530=>7, // Jugement constatant l'impécuniosité de la procédure de liquidation + 1540=>7, // Ordonnance statuant sur les contestations du projet de répartition + 1541=>74, // Rétractation de prononcé de liquidation judiciaire sur tierce opposition + 1542=>74, // Rétractation de jugement d'ouverture d'une procédure de sauvegarde sur tierce opposition + 1543=>74, // Rétractation de jugement d'ouverture d'une procédure de redressement judiciaire sur tierce opposition + 1544=>74, // Rétractation de jugement d'ouverture d'une procédure de liquidation judiciaire sur tierce opposition + 1545=>74, // Rétractation de jugement d'ouverture sur tierce opposition + 1546=>74, // Autre rétractation sur tierce opposition + 1550=>7, // Suites de jugements + 1580=>7, // Jugement prononçant la continuation de l'activité par apurement du passif + 1600=>63, // Faillite personnelle + 1601=>64, // Interdiction de gérer + 1602=>7, // Jugement de réhabilitation + 1603=>61, // Liquidation de Biens + 1604=>8, // Banqueroute + 1605=>7, // Jugement autorisant la reprise des poursuites individuelles + 1610=>8, // Faillite personnelle (Loi de 1985) + 1611=>8, // Interdiction de gérer (Loi de 1985) + 1620=>7, // Jugement condamnant le dirigeant en comblement du passif + 1650=>8, // Rétablissement Personnel + 1700=>7, // Décision soumise à publicité + 1900=>8, // Interdiction temporaire d'exercice de la profession de CAC + 1901=>8, // Radiation de la liste des CAC + 1999=>7, // Autre procédure collective + // MMD + 2000=>4, // Mention d'office + 2100=>39, // Chg.Capital/Cess.apport de parts + 2101=>39, // Chg.Capital/Cess.apport de parts + 2102=>39, // Chg.Capital/Cess.apport de parts + 2200=>4, // Cessation d'activité + 2201=>4, // Cessation d'activité temporaire + 2202=>41, // Dissolution + 2203=>41, // Dissolution de la société + 2204=>41, // Cessation d'activité avec dissolution + 2205=>4, // Fermeture du fonds + 2206=>39, // Mise en sommeil de la société + 2207=>39, // Suppression d'une branche d'activité + 2208=>39, // Suppression de l'établissement principal + 2209=>39, // Vente du fonds + 2210=>39, // Déclaration de dissolution par l'associé unique. + 2211=>39, // Clôture de la liquidation + 2212=>39, // Liquidation amiable + 2300=>39, // Changement d'Adresse + 2301=>39, // Modification de l'adresse du siège + 2302=>39, // Modification de l'enseigne + 2303=>39, // Modification de la date de clôture de l'exercice + 2304=>39, // Modification de la date de début d'activité + 2305=>39, // Modification de la dénomination + 2306=>39, // Modification de la durée de la société + 2307=>39, // Modification de la forme juridique + 2308=>39, // Modification du nom + 2309=>39, // Modification du nom commercial + 2310=>39, // Modification du pseudonyme + 2311=>39, // Modification sur l'exploitation + 2312=>39, // Modification(s) diverse(s) + 2313=>39, // Modification de l'activité + 2314=>39, // Poursuite de l'activité + 2315=>39, // Modification de l'administration + 2316=>39, // Mise en activité de la société + 2317=>39, // Modification du sigle + 2318=>39, // Modifications diverses + 2319=>39, // Poursuite de l'activité malgré la perte de plus de... + 2320=>39, // Reconsitution de l'actif net + 2321=>39, // Reconsitution de la moitié de l'actif net + 2350=>39, // Déclaration des associés (loi du 1er février 2005) + 2401=>39, // Changement de régime matrimonial + 2402=>39, // Changement de régime matrimonial (divorce) + 2403=>39, // Changement de régime matrimonial (mariage) + 2404=>39, // Changement de régime matrimonial (veuvage) + 2405=>39, // Changement de régime matrimonial (contrat de maria... + 2406=>39, // Reprise du fonds par le conjoint + 2407=>39, // Mention du conjoint collaborateur + 2408=>39, // Radiation du conjoint collaborateur + 2500=>3, // Confirmation établissement principal ou secondaire + 2510=>39, // L'établissement secondaire devient principal + 2520=>39, // Extension de l'établissement principal + 2600=>39, // Décès + 2610=>39, // Décision de l'unique actionnaire + 2620=>39, // Transmission universelle du patrimoine + 2630=>39, // Donation/Partage + 2635=>39, // Cession de parts + 2639=>39, // Nantissement de parts sociales + 2640=>39, // Changement de domicile personnel + 2650=>39, // Changement de nationalité + 2660=>39, // Réalisation de l'apport partiel d'actif + 2661=>39, // Apport partiel + 2700=>39, // Fusion/Absorption (entitée absorbante) + 2701=>39, // Fusion/Absorption (Entitée absorbante. Entité abso... + 2702=>39, // Fusion/Absorption (Entitée absorbante. Entité abso... + 2703=>39, // Fusion/Absorption (Entitée absorbante. Entité abso... + 2710=>39, // Projet de fusion (entitée absorbante) + 2720=>39, // Fusion/Absorption (entitée absorbée) + 2721=>39, // Fusion/Absorption (entitée absorbée non identifiée... + 2725=>39, // Fusion/Absorption + 2726=>39, // Projet de Fusion/Absorption + 2730=>39, // Projet de fusion (entitée absorbée) + 2740=>39, // Scission + 2750=>39, // Société participation + 2800=>37, // Location gérance reçue + 2840=>38, // Location/Gérance + 2850=>38, // Location gérance donnée : Précédent propriétaire e... + 2851=>38, // Location gérance donnée : Précédent propriétaire + 2860=>38, // Location gérance donnée : Précédent exploitant + 2870=>38, // Location gérance donnée + 2875=>38, // Gérance/Mandat + 2880=>38, // Renouvellement de location gérance + 2881=>38, // Changement de location gérance + 2885=>42, // Fin de location gérance + 2890=>38, // Location gérance relative à une branche + 2891=>39, // Location gérance relative à un établissement + 2892=>39, // Location gérance relative à un fond + 2900=>32, // Transfert d'établissement + 2901=>32, // Transfert de siège + 2902=>32, // Transfert du fonds + 2903=>32, // Projet de transfert du siège + 2904=>32, // Transfert du siège à l'étranger + 2950=>32, // Création de fonds + 2980=>32, // Transfert entre tribunaux + // DEPOTS DES COMPTES + 3100=>91, + 3200=>91, + 3300=>91, + 3999=>91, + // CREATIONS + 4000=>1, // Création d'entreprise + 4050=>1, // Création d'entreprise sans activité + 4100=>1, // Création d'entreprise sans établissement + 4200=>17, // Création d'établissement + 4250=>17, // Création suite à transfert + 4300=>17, // Création suite à reprise d'activité + 4350=>1, // Création suite à fin de location-gérance + 4355=>1, // Création suite à prise en location-gérance + 4360=>1, // Reprise d'activité par suite de la résolution de v + 4400=>1, // Création suite à changement de FJ + 4410=>1, // Création suite à héritage ou donation + 4450=>1, // Création suite à reprise par le conjoint + 4500=>17, // Fonds acquis dans le cadre d'une PC + 4501=>17, // Fonds acquis par achat + 4502=>17, // Fonds acquis par apport + 4600=>1, // Immatriculation d'une société de droit européen + 4999=>1, // Création + + // ventes !!! + 5500=>2, // Entreprise réalisant la vente + 5501=>2, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5502=>2, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5503=>2, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5510=>2, // Entreprise réalisant la vente : Co-propriétaire BODA ventes 12 0000-00-00 00:00:00 + 5600=>2, // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00 + 5650=>2, + 5700=>2, // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00 + 5999=>2, + + // RADIATIONS + 6000=>4, //Radiation pour cause de clôture de la liquidation (amiable/simplifié/général) + 6001=>4, //Radiation pour cause de clôture de la liquidation amiable + 6002=>4, //Radiation pour cause de clôture de la liquidation judiciaire pour IA + 6003=>4, //Radiation pour cause de clôture de la liquidation judiciaire + 6004=>4, //Radiation pour cause de clôture de la liquidation judiciaire simplifié + 6005=>4, //Radiation pour clôture du plan de cession + 6100=>4, //Radiation pour cause de décès + 6200=>4, //Radiation pour cause de mention d'office + 6201=>4, //Radiation pour cause de cessation d'activité + 6300=>4, //Radiation pour cause de non-exercice + 6400=>4, //Radiation pour cause de transfert + 6500=>4, //Radiation pour cause de jugement de clôture du plan de cession + 6600=>4, //Radiation d'un établissement + 6700=>4, //Radiation + ); +$tabEven2RO=array( 2305=>'a', + 2308=>'a', // Chg de dénomination(RS,Ens,Sigle) + 2309=>'a', // Modification du nom commercial BODB mmd 12 0000-00-00 00:00:00 + 2310=>'a', // Modification du pseudonyme + 2300=>'b', // Changement d'Adresse + 2301=>'b', + 2900=>'b', // Transfert d'établissement + 2901=>'b', // Transfert de siège + 2902=>'b', // Transfert du fonds + 2903=>'b', // Projet de transfert du siège + 2904=>'b', // Transfert du siège à l'étranger + 2950=>'b', // Création de fonds + 2980=>'b', // Transfert entre tribunaux + 2101=>'c', // Chg.Capital/Cess.apport de parts + 2315=>'d', // Changement de Dirigeants + 2313=>'e', // Mod Act/obj.soc./Cess./Mise somm. + 2307=>'f', // Changement de Forme juridique + 2318=>'g', // Opération sur Participations + 2725=>'h', // Fusion Absorption + 2318=>'i', // Mod.garantie financière/Caution + 2401=>'j', // Changement de régime matrimonial + 2319=>'k', // Non dissolution anticipée + 2318=>'l', // Non dissolution anticipée + 2318=>'m', // Dissolution anticipée (ou non) + 2303=>'n', // Mod.date cloture exercice social + 5500=>'V', // Entreprise réalisant la vente + 5501=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5502=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5503=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5510=>'V', // Entreprise réalisant la vente : Co-propriétaire BODA ventes 12 0000-00-00 00:00:00 + 5600=>'V', + 5650=>'V', + 5700=>'A', // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00 + 1411=>'F', // Arrêt du plan de cession + 1408=>'G', // Modification du plan de cession + 1409=>'N', // Modification du plan de continuation + 1414=>'M', // Arrêt du plan de redressement + + ); + + +function exporte($txt, $lon, $sep='') { + $txt=strtr(trim($txt),array('''=>"'",'&'=>'&', '²'=>'²', "\r"=>'', "\n"=>'', "\t"=>'')); + + if ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt); + + return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep; +} + + +function conversionSd2So2000($nomFichierIn, $numeroAbonneBil='000960030', $nomFichierOut='', $optionFicheId='S') { + + $message=''; + $iDb=new WDB(); + $iBodacc=new MBodacc(); + $iInsee=new MInsee(); + $iRncs=new MRncs(); + + global $tabEvenSolib; + global $tabEven2SO; + global $tabEven2RO; + + $tabLignes=file($nomFichierIn); +//print_r($tabLignes); +//die(); + + $ligne001=$ligne100=$ligne104=$ligne999=0; + if ($nomFichierOut=='') $nomFichierOut=$nomFichierIn.'.bil'; + + $fp=fopen($nomFichierOut, 'w'); + $dateJ=date('Ymd'); + $ecrireLignePre=false; + + /** Codes/Variables à gérer **/ + $depPar=0; + $SOSTAE=''; + $typeFicheId='I'; // Fiche Identifiant + $optExtInsee=$optScore=false; + + /** Type de fiche Id **/ + if (strpos($optionFicheId, 'S')==true) $typeFicheId='S'; // Fiche Standard + elseif (strpos($optionFicheId, 'C')==true) $typeFicheId='C'; // Fiche Complète + if (strpos($optionFicheId, 'E')==true) $optExtInsee=true; // Option Extension INSEE + if (strpos($optionFicheId, 'N')==true) $optScore=true; // Option Score + + foreach ($tabLignes as $i=>$ligne) { + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $ligne001++; + break; + case 100: // Structure Bodacc + case 999: // Fin + $strTxt=wordwrap($txtAnn, 39, EOL); + $tabTxt=explode(EOL, $strTxt); + foreach($tabTxt as $j=>$txt) { + $SOSEQ++; + if($j%16==0) { + // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $typEnr=9; + if ($j==0) $ligneTXT =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + else $ligneTXT.=EOL.initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + $ligneTXT.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ? + $ligneTXT.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ? + $ligneTXT.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ? + $ligneTXT.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren + $ligneTXT.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic + $ligneTXT.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ + $ligneTXT.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence + $ligneTXT.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence + $ligneTXT.=exporte($typEnr, 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $ligneTXT.=exporte('TXT', 3); // Structure identité + $ligneTXT.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle + $ligneTXT.=exporte($ref, 30); // Réf. Client + $ligneTXT.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié + $ligneTXT.=exporte($SOJAL, 3); // 001=Bodacc A, 200=Bodacc B, 300=Bodacc C + $ligneTXT.=initstr($datePar, 8, '0', ALIGN_RIGHT); // Date de parution + $ligneTXT.=initstr(0, 5, '0', ALIGN_RIGHT); // Page + $ligneTXT.=exporte($codeEve, 2); // + $ligneTXT.=initstr($depPar, 2, '0', ALIGN_RIGHT); + $ligneTXT.=initstr($numAnn, 6, '0', ALIGN_RIGHT); + $ligneTXT.=exporte($codeRol, 1); // + $ligneTXT.=exporte('T', 1); + } + $ligneTXT.=exporte($txt, 40); + } + $codeEve=$codeRol=''; + $ligneOut=$ligneID.EOL.$ligneANN.EOL.$ligneTXT; + if ($ligne100>1) $ecrireLignePre=true; + if($typeLigne==999) { + $ligne999++; + break; + } + + $nann = trim(substr($ligne, 3 , 10 ))*1; // N° d'annonce + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $tabIdentite=@$iInsee->getIdentiteEntreprise($siren); + $nic = trim(substr($ligne, 22, 5 ))*1; // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= substr($ligne, 31 , 8 )*1; // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $numRC = trim(substr($ligne,95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $rs = trim(substr($ligne,104, 150 )); // Raison sociale de l'entreprise + $nomCom = trim(substr($ligne,254, 100 )); // Nom Commerciale + $ens = trim(substr($ligne,354, 100 )); // Enseigne + $fj = trim(substr($ligne,484, 4 ))*1; // FJ + $fjLib = trim(substr($ligne,488, 90 )); // FJ libellé + $capMnt = trim(substr($ligne,578, 15 )); // Capital + $capDev = trim(substr($ligne,593, 3 )); // Capital Devise + $adrNum = trim(substr($ligne,596, 4 )); // + $adrBtq = trim(substr($ligne,600, 1 )); // FJ libellé + $adrVoi = trim(substr($ligne,601, 5 )); // FJ libellé + $adrLib = trim(substr($ligne,606, 50 )); // FJ libellé + $adrL2 = trim(substr($ligne,656, 50 )); // FJ libellé + $adrL3 = trim(substr($ligne,706, 40 )); // FJ libellé + $adrCP = trim(substr($ligne,746, 5 ))*1; // FJ libellé + $adrVil = trim(substr($ligne,751, 45 )); // FJ libellé + if ($adrCP==0) { + $adrNum = trim(substr($ligne,796, 4 )); // FJ libellé + $adrBtq = trim(substr($ligne,800, 1 )); // FJ libellé + $adrVoi = trim(substr($ligne,801, 5 )); // FJ libellé + $adrLib = trim(substr($ligne,806, 50 )); // FJ libellé + $adrL2 = trim(substr($ligne,856, 50 )); // FJ libellé + $adrL3 = trim(substr($ligne,906, 40 )); // FJ libellé + $adrCP = trim(substr($ligne,946, 5 ))*1; // FJ libellé + $adrVil = trim(substr($ligne,951, 45 )); // FJ libellé + } + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + foreach ($even as $codeEven) + if ($codeEven<>0) { + if (@$codeEve=='') $codeEve=$tabEven2SO[$codeEven]; + if (@$codeRol=='') $codeRol=$tabEven2RO[$codeEven]; + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + } + else + $txtEven.=''; + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $dateCess= substr($ligne, 1136, 8 )*1; // Date de cessat° des paiements + $dateJuge= substr($ligne, 1144, 8 )*1; // Date de jugement + $dateEffet=substr($ligne, 1161, 8 )*1; // Date d'effet + if ($dateEffet*1==0) $dateEffet=$dateJuge; + + $vteMnt=trim(substr($ligne, 1169, 15 ))*1; // Montant de la vente + $vteDev=substr($ligne, 1184, 3 ); // Devise de la vente + + + if ($nic*1==0) $nic=$tabIdentite['Nic']; + + $SONABO=$numeroAbonneBil; + if ($tabIdentite['Actif']==1) $SOORIG=1; + elseif (!isset($tabIdentite['Actif'])) $SOORIG=3; + elseif ($tabIdentite['Actif']==0 && ($tabIdentite['EntActiveRCS']==1||$tabIdentite['EtabActifRCS']==1)) $SOORIG=7; + elseif ($tabIdentite['Actif']==0 && $tabIdentite['EntActiveRCS']==0 && $tabIdentite['EtabActifRCS']==0) $SOORIG=9; + else $SOORIG=8; + + if ($tabIdentite['Civilite']==1) $SOTSEX='M'; + elseif ($tabIdentite['Civilite']==2) $SOTSEX='F'; + else $SOTSEX=''; + $SONUME=''.preg_replace('/^0+/','', $tabIdentite['Source']).$tabIdentite['SourceId']; + $SONUS='000000000'; + $SOSEQ=1; + if ($adrCP==0) { + $adrNum = $tabIdentite['AdresseNum']; + $adrBtq = $tabIdentite['AdresseBtq']; + $adrVoi = $tabIdentite['AdresseVoie']; + $adrLib = $tabIdentite['AdresseRue']; + $adrL2 = $tabIdentite['Adresse2']; + $adrL3 = ''; + $adrCP = $tabIdentite['CP']; + $adrVil = $tabIdentite['Ville']; + } + $typEnr=1; + $DBILS2 =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + $DBILS2.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ? + $DBILS2.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ? + $DBILS2.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ? + $DBILS2.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren + $DBILS2.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic + $DBILS2.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ + $DBILS2.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence dans le groupe + $DBILS2.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Date d'envoi de l'info + $DBILS2.=exporte($typEnr, 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $DBILS2.=exporte('ID', 3); // Structure identité + $DBILS2.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle + $DBILS2.=exporte($ref, 30); // Réf. Client + //($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT) + $DBILS2.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié + $DBILS2.=exporte('', 1); // D=Siren douteux + $DBILS2.=exporte('', 9); // Témoin de MAJ + $DBILS2.=exporte($rs, 60); // + $DBILS2.=exporte(substr($rs,60),30); // + $DBILS2.=exporte($tabIdentite['Sigle'], 30); // Vide ! + $DBILS2.=exporte($ens, 60); // + $DBILS2.=initstr($adrNum, 4, '0', ALIGN_RIGHT); // + $DBILS2.=exporte($adrBtq, 1); // + $DBILS2.=exporte(preg_replace('/ +/',' ',$adrVoi.' '.$adrLib), 33); // + $DBILS2.=exporte($adrVil, 32); // + $DBILS2.=initstr($adrCP, 5, '0', ALIGN_RIGHT); // + $DBILS2.=exporte(preg_replace('/ +/',' ',$adrL2.' '.$adrL3), 30); // + $DBILS2.=initstr($tabIdentite['DateCreaEn'], 8, '0', ALIGN_RIGHT); // Date créa ENT + $DBILS2.=exporte($tabIdentite['Siege'], 1); // Statut de l'établissement + $DBILS2.=initstr($tabIdentite['FJ'], 4, 0, ALIGN_RIGHT); + $DBILS2.=exporte($SOTSEX, 1); // Sexe M/F + + $DBILS2.=initstr($tabIdentite['NbEtab']*1, 4, 0, ALIGN_RIGHT); + $DBILS2.=exporte($SOSTAE, 4); // NAF4 ENT + $DBILS2.=exporte('', 4); // Famille ENT + $DBILS2.=exporte($SOSTAE, 4); // NAF4 ETAB + $DBILS2.=exporte('', 4); // Famille ETAB + $DBILS2.=exporte('', 1); // Indicateur Procol + $DBILS2.=exporte('', 2); // Code monnaie + $DBILS2.=initstr(0, 13, '0', ALIGN_RIGHT); // Montant du capital + $DBILS2.=exporte('', 7); // Effectif + $DBILS2.=exporte('', 9); // Num RC + $DBILS2.=initstr(strtr($tabIdentite['Tel'],array('.'=>'','+'=>'00',' '=>'','-'=>'','/'=>'')), 10, '0', ALIGN_RIGHT); + $DBILS2.=initstr(strtr($tabIdentite['Fax'],array('.'=>'','+'=>'00',' '=>'','-'=>'','/'=>'')), 10, '0', ALIGN_RIGHT); + //5630Z5630Z RUE 00000000 00000000 2901929019 + $DBILS2.=exporte($tabIdentite['Web'], 40); + $DBILS2.=exporte('', 3); // Qualité du dirigeant + $DBILS2.=exporte('', 60); // NOM, Prénom du dirigeant + $DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Date Naiss Diri +// $DBILS2.=exporte('', 79); + $DBILS2.=exporte('', 35); // Lieu de Naissance + if ($optScore) { + $tabTmp=$iDb->select('scores_surveillance', + 'siren, actif, procol, indiScore, indiScore20, encours, indiScoreDate, dateBilan, indiScorePre, indiScore20Pre, encoursPre, indiScoreDatePre, sourceModif, nbModifs, dateUpdate', + "siren=$siren AND indiScoreDate>0", false, MYSQL_ASSOC); + if (@$tabTmp[0]['siren']*1==$siren) { + echo "$siren, parution Annonce le $datePar, calcul le ".@$tabTmp[0]['dateUpdate'].EOL; + $tabScore=$tabTmp[0]; + $note=$tabScore['indiScore20']; + $encours=round($tabScore['encours']/1000); + } else { + echo "$siren, parution Annonce le $datePar, pas de calcul !".EOL; + $tabScore=@calculIndiScore($siren, $nic, false, 0, false); + $note=$tabScore['Indiscore20']; + $encours=round($tabScore['encours']/1000); + } + $encoursDev='EUR'; + } else + $note=$encours=$encoursDev=''; + $DBILS2.=initstr($note, 2, '0', ALIGN_RIGHT); //37 Note sur 20 + $DBILS2.=initstr($encours, 7, '0', ALIGN_RIGHT); //44 Encours KE KF + $DBILS2.=exporte('', 1); //45 Code paiement + $DBILS2.=exporte('', 1); //46 Code situfi + $DBILS2.=exporte('', 1); //47 Code Avis + $DBILS2.=exporte($encoursDev,3); //47 Encours de la devise + $DBILS2.=exporte('', 6); // Code Sicovam + $DBILS2.=exporte('', 2); // Type de marché RM, CT, SM, HC, MO, NM, ML, AL, MR + $DBILS2.=exporte('', 12); // Code ISIN + $DBILS2.=exporte('', 9); // Filler Bil anciennement sur 83, 32 puis 9 + $DBILS2.=exporte($tabIdentite['NafEnt'], 5); + $DBILS2.=exporte($tabIdentite['NafEtab'], 5);// + $DBILS2.=exporte('', 18); //60 Filler + $DBILS2.=exporte('', 4); // Filler RUE ? + $DBILS2.=exporte('', 5); // Nic source cible de l'étab + $DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Date de MAJ du capital + $DBILS2.=exporte('', 3); // Monnaie d'origine du capital + $DBILS2.=exporte('', 3); // Monnaie de livraison du capital (fin de l'ancien filler) + $DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Date de création de l'établissement + $DBILS2.=exporte('', 1); // Origine création + $DBILS2.=exporte('', 2); // Tr Eff Ent + $DBILS2.=exporte('', 2); // Tr Eff Etab + $DBILS2.=exporte('', 2); // NAP 40 Entrep + $DBILS2.=exporte('', 2); // NAP 40 Etab + $DBILS2.=exporte('', 5); // Act Artisanale Etab + $DBILS2.=exporte('', 1); // Modalité activité entrep + $DBILS2.=exporte('', 1); // Modalité activité etab + $DBILS2.=exporte('', 2); // Code Région Entrep + $DBILS2.=exporte('', 2); // Code Région Etab + $DBILS2.=exporte($tabIdentite['Dept'], 2); // Département du siège + $DBILS2.=exporte($tabIdentite['codeCommune'], 3); // Localité + $DBILS2.=exporte($tabIdentite['Dept'], 2); // Département de l'étab + $DBILS2.=exporte($tabIdentite['codeCommune'], 3); // Localité + $DBILS2.=exporte('', 1); // Dept Outre Mer + $DBILS2.=exporte('', 1); // Arrondissement + $DBILS2.=exporte('', 1); // Canton Dom ? + $DBILS2.=exporte('', 2); // Canton + $DBILS2.=exporte('', 8); // Code Ilot + $DBILS2.=exporte('', 2); // ZEMET + $DBILS2.=exporte('', 2); // Tranche Comm Etab + $DBILS2.=exporte('', 2); // Dept Unite urbaine + $DBILS2.=exporte('', 1); // Taille UU + $DBILS2.=exporte('', 2); // UU etab + $DBILS2.=exporte('', 5); // Code rivoli + $DBILS2.=exporte('', 2); // PPale région entrep + $DBILS2.=exporte('', 1); // Code monoreg + $DBILS2.=exporte('', 1); // Code monoact + $DBILS2.=exporte('', 1); // Code tranche CA + $DBILS2.=exporte('', 1); // Tranche part CA export + $DBILS2.=exporte('', 1); // RECME + $DBILS2.=exporte('', 1); // Ordinarité + $DBILS2.=exporte('', 2); // Code nature étab + $DBILS2.=exporte('', 2); // Sigularité étab + + $ligneID=$DBILS2; + $ligne100++; + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $SOSEQ++; + if ($bodacc=='A') $SOJAL='001'; + elseif ($bodacc=='B') $SOJAL='200'; + elseif ($bodacc=='C') $SOJAL='300'; + else $SOJAL='999'; + $DBILS2 =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + $DBILS2.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ? + $DBILS2.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ? + $DBILS2.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ? + $DBILS2.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren + $DBILS2.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic + $DBILS2.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ + $DBILS2.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence + $DBILS2.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence + $DBILS2.=exporte('9', 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $DBILS2.=exporte('ANN', 3); // Structure identité + $DBILS2.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle + $DBILS2.=exporte($ref, 30); // Réf. Client + //($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT) + $DBILS2.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié + $DBILS2.=exporte($SOJAL, 3); // 001=Bodacc A, 200=Bodacc B, 300=Bodacc C + $DBILS2.=initstr($datePar, 8, '0', ALIGN_RIGHT); // Date de parution + $DBILS2.=initstr(0, 5, '0', ALIGN_RIGHT); // Page + if ($codeEve=='') { + $message.="Siren : $siren, Bodacc $bodacc, code évènement non géré : '$codeEven'".EOL; + /*$nann = trim(substr($ligne, 3 , 10 ))*1; // N° d'annonce + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $tabIdentite=@$iInsee->getIdentiteEntreprise($siren); + $nic = trim(substr($ligne, 22, 5 ))*1; // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= substr($ligne, 31 , 8 )*1; // Date de parution du Bodacc Format AAAAMMJJ + $numAnn*/ + sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales SOFID (ERREUR)", $message); + return $message; + } + $DBILS2.=exporte($codeEve, 2); // + $DBILS2.=initstr($depPar, 2, '0', ALIGN_RIGHT); + $DBILS2.=initstr($numAnn, 6, '0', ALIGN_RIGHT); + $DBILS2.=exporte($codeRol, 1); // + $DBILS2.=exporte($tabEvenSolib[$codeEve], 5); + $DBILS2.=exporte($codeTri, 6); // + $DBILS2.=exporte($numPar, 3); // + $DBILS2.=initstr($dateJuge, 8, '0', ALIGN_RIGHT); // Date de jugement + $DBILS2.=initstr($dateEffet, 8, '0', ALIGN_RIGHT); // Date d'effet + $DBILS2.=initstr($dateCess, 8, '0', ALIGN_RIGHT); // Date de cessat° des paiements + $DBILS2.=exporte($vteDev, 2); // Devise de la vente + $DBILS2.=initstr($vteMnt, 11, '0', ALIGN_RIGHT); // Montant de la vente + $DBILS2.=exporte('', 33); // Particularité + $DBILS2.=exporte('', 4); // Code rubrique du Bodacc A1xx + $DBILS2.=exporte('', 6); // Code lib injecté + + $tabJuge=$iRncs->getIntervenants($siren); + foreach ($tabJuge as $iDepot=>$depot) { + $DBILS2.=exporte($depot['admid'], 5); // Mot clé Nom + $DBILS2.=exporte($depot['admtype'], 1); // Type officier ministeriel + $DBILS2.=initstr($depot['admid'], 7, '0', ALIGN_RIGHT); // Code Bil + $DBILS2.=exporte($depot['admnom'], 30); // Nom syndic + $DBILS2.=initstr($depot['admadrNum'], 4, '0', ALIGN_RIGHT); // N° rue + $DBILS2.=exporte($depot['admadrInd'], 1); // Bis + $DBILS2.=exporte($depot['admadrType'], 3); // Type Voie + $DBILS2.=exporte($depot['admadrVoie'], 33); // Lib Voie + $DBILS2.=exporte($depot['admadr2'], 32); // Lieu + $DBILS2.=exporte($depot['admadrCP'], 5); // CP + $DBILS2.=exporte($depot['admadrVille'], 32); // Ville + $DBILS2.=exporte('', 10); // Tel + if ($iDepot==1) break; + } + + $ligneANN=$DBILS2; + $txtAnn=''; + //if ($ligne100>1) $ecrireLignePre=true; + break; + case 104: // Annonce + $ligne104++; + $txtAnn=trim($txtAnn.' '.trim(substr($ligne, 89 , 1910))); // Texte Annonce + break; + default: // Ligne non gérée + break; + } + if ($ecrireLignePre) { + fwrite($fp, $ligneOut.EOL); + $ecrireLignePre=false; + } + } + fclose($fp); + return true; +} \ No newline at end of file diff --git a/library/Metier/insee/classMInsee.php b/library/Metier/insee/classMInsee.php new file mode 100644 index 00000000..695cb7d0 --- /dev/null +++ b/library/Metier/insee/classMInsee.php @@ -0,0 +1,6250 @@ + +global $tabEvenInsee; +global $timer; +$tabEvenInsee=array( + // Anciens évènements de la quotidienne Insee + 'i00'=>'Modification de l\'établissement', + 'iOA'=>'Activation économique de l\'établissement par adjonction de moyens de production', + 'i0C'=>'Création de l\'établissement', + 'iOD'=>'Désactivation économique de l\'établissement par suppression de moyens de production', + 'i0F'=>'Fermeture de l\'établissement', + 'iOR'=>'Modification simple ou modification de moyen de production de l\'établissement', + 'iCC'=>'Création de l\' entreprise par création du premier établissement', + 'iRC'=>'Réactivation de l\'entreprise par création de l\'établissement', + 'iRR'=>'Réactivation de l\'entreprise par réactivation de l\'établissement', + 'iFF'=>'Fermeture de l\'établissement entraînant la fermeture de l\'entreprise', + 'iTC'=>'Création de l\'établissement dans le cadre d\'un transfert', + 'iTR'=>'Réactivation de l\'établissement dans le cadre d\'un transfert', + 'iT0'=>'Modification simple ou de moyens de production sur l\'établissement dans le cadre d\'un transfert', + 'iTA'=>'Activation économique de l\'établissement par adjonction de moyens de production dans le cadre d\'un transfert', + 'iTD'=>'Désactivation économique de l\'établissement par suppression de moyens de production dans le cadre d\'un transfert', + 'iTF'=>'Fermeture de l\'établissement dans le cadre d\'un transfert', + 'iER'=>'Modification ERR de l\'établissement', + // Evènements Crées par différentiel de la Mensuelle Insee par S&D + 'iM0C'=>'Création de l\'établissement', + 'iM0F'=>'Fermeture de l\'établissement', + 'iM0R'=>'Réactivation de l\'établissement', + 'iM00'=>'Modification de l\'établissement', + 'iMAS'=>'Modification de la nature d\'activité et de la saisonalité', + 'iMAC'=>'Modification de la nature d\'activité de l\'établissement', + 'iMSA'=>'Modification de la saisonalité de l\'établissement', + // Evènements Crées par diff3+4 + 'iMPF'=>'Etablissement présumé fermé (formalités de création faites par le repreneur)', + 'iMNP'=>'Etablissement présumé fermé (retour de courrier en NPAI)', + // Décret n°2010-1042 du 01/09/2010 relatif à l'inscription au registre du commerce et des sociétés et au répertoire national mentionné à l'article R. 123-220 du code de commerce + // Codification provisoire à changer dans l'attente de l'INSEE + 'i810'=>'Suppression du SIREN suite au refus d\'inscription au Registre du Commerce et des Sociétés', // Anciennement iRCS + // Nouveaux évènements Sirene3 de la quotidienne Insee + 'i110'=>'Création de l\'entreprise', + 'i120'=>'Réactivation de l\'entreprise', + 'i125'=>'Réactivation de l\'entreprise suite à une mise à jour du répertoire SIRENE', + 'i130'=>'Création de l\'établissement', + 'i145'=>'Reprise d\'activité de l\'établissement suite à une mise à jour du répertoire SIRENE', + 'i400'=>'Suppression du doublon', + 'i410'=>'Cessation juridique de l\'entreprise', + 'i420'=>'Absence d\'activité de l\'entreprise (cessation économique de l\'entreprise)', + 'i425'=>'Absence d\'activité d\'une entreprise suite à une mise à jour au répertoire SIRENE', + 'i430'=>'Fermeture de l\'établissement', + 'i435'=>'Fermeture de l\'établissement suite à une mise à jour au répertoire SIRENE', + 'i510'=>'Création de l\'établissement d\'arrivée et cessation de l\'établissement de départ dans le cadre d\'un transfert', + 'i520'=>'Création de l\'établissement d\'arrivée et modification de l\'établissement de départ dans le cadre d\'un transfert', + 'i530'=>'Modification de l\'établissement d\'arrivée et cessation de l\'établissement de départ dans le cadre d\'un transfert', + 'i540'=>'Modification de l\'établissement d\'arrivée et modification de l\'établissement de départ dans le cadre d\'un transfert', + 'i610'=>'Modification d\'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production', + 'i620'=>'Modification d\'activité au niveau du SIREN associé à une désactivation économique par suppression de moyens de production', + 'i621'=>'Modification d\'activité du SIREN associé à une désactivation économique par suppression de moyens de production suite à une correction d\'erreur', + 'i631'=>'Modification d\'activité du SIREN associé', + 'i640'=>'Modification d\'activité au niveau de l\'établissement associée à une activation économique par adjonction de moyens de production', + 'i650'=>'Modification d\'activité au niveau de l\'établissement associée à une désactivation économique par suppression de moyens de production', + 'i661'=>'Modification d\'activité de l\'établissement', + 'i710'=>'Modification de l\'identification du SIREN', + 'i711'=>'Modification de l\'identification du SIREN suite à correction d\'erreur', + 'i720'=>'Modification de l\'adresse ou de l\'identification de l\'établissement', + 'i780'=>'Modification de l\'établissement', + 'i781'=>'Modification de l\'établissement suite à correction d\'erreur', + 'i795'=>'Personne radiée à sa demande de de la base SIRENE diffusion', + ); + +global $tabDestinat; +$tabDestinat=array( 'i3'=>'Etablissement vendu', + 'i7'=>'Maintien d\'activité, l\'établissement devient siège', + 'i8'=>'Maintien d\'activité, l\'établissement devient principal', + 'iA'=>'Maintien d\'activité, l\'établissement devient secondaire', + 'iB'=>'Etablissement fermé', + 'iC'=>'Etablissement supprimé', + 'iD'=>'Mise en location-gérance de la totalité du fonds', + 'iE'=>'Mise en location-gérance d\'une partie du fonds', + 'iF'=>'Cessation d\'activité (pour les liasses agricoles)', + 'iG'=>'Mise en location-gérance de la totalité des terres et des bâtiments agricoles (pour les liasses agricoles)', + 'iH'=>'Mise en location-gérance d\'une partie des terres et des bâtiments agricoles (pour les liasses agricoles)', + 'iI'=>'Transmission au conjoint (pour les liasses agricoles)', + 'iJ'=>'Cession (pour les liasses agricoles)', + 'iVP'=>'Suppression partielle d\'activité par vente', + 'iDP'=>'Suppression partielle d\'activité par disparition', + 'iRP'=>'Suppression partielle d\'activité par reprise par le propriétaire', + ); +global $tabTypEtab; +$tabTypEtab=array( 'i00'=>'Rappel des données de l\'établissement du siège en cas de modification exclusive de l\'entreprise', + 'i08'=>'Siège avant transfert non fermé', + 'i09'=>'Siège après transfert non créé', + 'i10'=>'Siège avant transfert fermé', + 'i11'=>'Siège après transfert créé', + 'i12'=>'Siège créé (hors transfert)', + 'i13'=>'Siège fermé (hors transfert)', + 'i14'=>'Siège modifié (hors transfert) : modification de l\'activité principale avec activation économique', + 'i15'=>'Siège modifié (hors transfert) : modification de l\'activité principale avec désactivation économique', + 'i16'=>'Siège modifié (hors transfert) : modification de l\'activité principale de l\'établissement', + 'i17'=>'Siège modifié (hors transfert) : modification de l\'identification de l\'établissement', + 'i19'=>'Siège modifié (hors transfert) : autre modification de l\'établissement', + 'i20'=>'Établissement avant transfert fermé', + 'i21'=>'Établissement après transfert créé', + 'i22'=>'Établissement créé (hors transfert)', + 'i23'=>'Établissement fermé (hors transfert)', + 'i24'=>'Établissement modifié (hors transfert) : modification de l\'activité principale avec activation économique', + 'i25'=>'Établissement modifié (hors transfert) : modification de l\'activité principale avec désactivation économique', + 'i26'=>'Établissement modifié (hors transfert) : autre modification de l\'activité principale de l\'établissement', + 'i27'=>'Établissement modifié (hors transfert) : modification de l\'identification de l\'établissement', + 'i29'=>'Établissement modifié (hors transfert) : modification d\'une autre variable de l\'établissement', + 'i30'=>'Établissement avant transfert non fermé', + 'i31'=>'Établissement après transfert non créé', + 'i32'=>'Établissement supprimé', + ); + +require_once 'Metier/bodacc/classMBodacc.php'; +require_once 'Metier/bodacc/classMBalo.php'; +require_once 'Metier/partenaires/classMTva.php'; +require_once 'Metier/partenaires/classMMap.php'; +require_once 'Metier/partenaires/classMAmabis.php'; +require_once 'Metier/partenaires/classMRncs.php'; +require_once 'Metier/partenaires/classMTel.php'; +require_once 'Metier/partenaires/classMBourse.php'; +require_once 'Metier/partenaires/classMBilans.php'; + +class MInsee { + + private static $tabFct=array( 'ADM'=>'Administrateur', + 'ASS'=>'Associé', + 'COG'=>'Co-gérant', + 'CON'=>'Contrôleur de gestion', + 'DID'=>'Directeur Général Délégué', + 'DIR'=>'Directeur', + 'GER'=>'Gérant', + 'PCS'=>'Président du Conseil de Surveillance', + 'PDG'=>'Président Directeur Général', + 'PP'=>'Personne Physique', + 'PRD'=>'Président du directoire', + 'PRE'=>'Président du Conseil d\'Administration', + 'VIC'=>'Vice président du CA ou Surv.', + ); + + private static $tabDep=array( '01'=>'Ain', + '1'=>'Ain', + '02'=>'Aisne', + '2'=>'Aisne', + '03'=>'Allier', + '3'=>'Allier', + '04'=>'Alpes-de-Haute-Provence', + '4'=>'Alpes-de-Haute-Provence', + '05'=>'Hautes-Alpes', + '5'=>'Hautes-Alpes', + '06'=>'Alpes-Maritimes', + '6'=>'Alpes-Maritimes', + '07'=>'Ardèche', + '7'=>'Ardèche', + '08'=>'Ardennes', + '8'=>'Ardennes', + '09'=>'Ariège', + '9'=>'Ariège', + '10'=>'Aube', + '11'=>'Aude', + '12'=>'Aveyron', + '13'=>'Bouches-du-Rhône', + '14'=>'Calvados', + '15'=>'Cantal', + '16'=>'Charente', + '17'=>'Charente-Maritime', + '18'=>'Cher', + '19'=>'Corrèze', + '20'=>'Corse', + '2A'=>'Corse-du-Sud', + '20A'=>'Corse-du-Sud', + '2B'=>'Haute-Corse', + '20B'=>'Haute-Corse', + '21'=>'Côte-d\'Or', + '22'=>'Côtes-d\'Armor', + '23'=>'Creuse', + '24'=>'Dordogne', + '25'=>'Doubs', + '26'=>'Drôme', + '27'=>'Eure', + '28'=>'Eure-et-Loir', + '29'=>'Finistère', + '30'=>'Gard', + '31'=>'Haute-Garonne', + '32'=>'Gers', + '33'=>'Gironde', + '34'=>'Hérault', + '35'=>'Ille-et-Vilaine', + '36'=>'Indre', + '37'=>'Indre-et-Loire', + '38'=>'Isère', + '39'=>'Jura', + '40'=>'Landes', + '41'=>'Loir-et-Cher', + '42'=>'Loire', + '43'=>'Haute-Loire', + '44'=>'Loire-Atlantique', + '45'=>'Loiret', + '46'=>'Lot', + '47'=>'Lot-et-Garonne', + '48'=>'Lozère', + '49'=>'Maine-et-Loire', + '50'=>'Manche', + '51'=>'Marne', + '52'=>'Haute-Marne', + '53'=>'Mayenne', + '54'=>'Meurthe-et-Moselle', + '55'=>'Meuse', + '56'=>'Morbihan', + '57'=>'Moselle', + '58'=>'Nièvre', + '59'=>'Nord', + '60'=>'Oise', + '61'=>'Orne', + '62'=>'Pas-de-Calais', + '63'=>'Puy-de-Dôme', + '64'=>'Pyrénées-Atlantiques', + '65'=>'Hautes-Pyrénées', + '66'=>'Pyrénées-Orientales', + '67'=>'Bas-Rhin', + '68'=>'Haut-Rhin', + '69'=>'Rhône', + '70'=>'Haute-Saône', + '71'=>'Saône-et-Loire', + '72'=>'Sarthe', + '73'=>'Savoie', + '74'=>'Haute-Savoie', + '75'=>'Paris', + '76'=>'Seine-Maritime', + '77'=>'Seine-et-Marne', + '78'=>'Yvelines', + '79'=>'Deux-Sèvres', + '80'=>'Somme', + '81'=>'Tarn', + '82'=>'Tarn-et-Garonne', + '83'=>'Var', + '84'=>'Vaucluse', + '85'=>'Vendée', + '86'=>'Vienne', + '87'=>'Haute-Vienne', + '88'=>'Vosges', + '89'=>'Yonne', + '90'=>'Territoire de Belfort', + '91'=>'Essonne', + '92'=>'Hauts-de-Seine', + '93'=>'Seine-Saint-Denis', + '94'=>'Val-de-Marne', + '95'=>'Val-d\'Oise', + '971'=>'Guadeloupe', + '972'=>'Martinique', + '973'=>'Guyane', + '974'=>'Réunion', + '975'=>'Saint-Pierre-et-Miquelon', + '976'=>'Mayotte', + '985'=>'Mayotte', // Codification au Bodacc + '986'=>'Wallis-et-Futuna', + '987'=>'Polynésie-Française', + '988'=>'Nouvelle-Calédonie', + ); + + private static $tabDepArt=array( '01'=>'de l\'Ain', + '1'=>'de l\'Ain', + '02'=>'de l\'Aisne', + '2'=>'de l\'Aisne', + '03'=>'de l\'Allier', + '3'=>'de l\'Allier', + '04'=>'des Alpes-de-Haute-Provence', + '4'=>'des Alpes-de-Haute-Provence', + '05'=>'des Hautes-Alpes', + '5'=>'des Hautes-Alpes', + '06'=>'Ades lpes-Maritimes', + '6'=>'des Alpes-Maritimes', + '07'=>'de l\'Ardèche', + '7'=>'de l\'Ardèche', + '08'=>'des Ardennes', + '8'=>'des Ardennes', + '09'=>'de l\'Ariège', + '9'=>'de l\'Ariège', + '10'=>'de l\'Aube', + '11'=>'de l\'Aude', + '12'=>'de l\'Aveyron', + '13'=>'des Bouches-du-Rhône', + '14'=>'du Calvados', + '15'=>'du Cantal', + '16'=>'de la Charente', + '17'=>'de la Charente-Maritime', + '18'=>'du Cher', + '19'=>'de la Corrèze', + '20'=>'de la Corse', + '2A'=>'de la Corse-du-Sud', + '20A'=>'de la Corse-du-Sud', + '2B'=>'de la Haute-Corse', + '20B'=>'de la Haute-Corse', + '21'=>'de la Côte-d\'Or', + '22'=>'des Côtes-d\'Armor', + '23'=>'de la Creuse', + '24'=>'de la Dordogne', + '25'=>'du Doubs', + '26'=>'de la Drôme', + '27'=>'de l\'Eure', + '28'=>'de l\'Eure-et-Loir', + '29'=>'du Finistère', + '30'=>'du Gard', + '31'=>'de la Haute-Garonne', + '32'=>'du Gers', + '33'=>'de la Gironde', + '34'=>'de l\'Hérault', + '35'=>'de l\'Ille-et-Vilaine', + '36'=>'de l\'Indre', + '37'=>'de l\'Indre-et-Loire', + '38'=>'de l\'Isère', + '39'=>'du Jura', + '40'=>'des Landes', + '41'=>'du Loir-et-Cher', + '42'=>'de la Loire', + '43'=>'de la Haute-Loire', + '44'=>'de la Loire-Atlantique', + '45'=>'du Loiret', + '46'=>'du Lot', + '47'=>'du Lot-et-Garonne', + '48'=>'de la Lozère', + '49'=>'du Maine-et-Loire', + '50'=>'de la Manche', + '51'=>'de la Marne', + '52'=>'de la Haute-Marne', + '53'=>'de la Mayenne', + '54'=>'de la Meurthe-et-Moselle', + '55'=>'de la Meuse', + '56'=>'du Morbihan', + '57'=>'de la Moselle', + '58'=>'de la Nièvre', + '59'=>'du Nord', + '60'=>'de l\'Oise', + '61'=>'de l\'Orne', + '62'=>'du Pas-de-Calais', + '63'=>'du Puy-de-Dôme', + '64'=>'des Pyrénées-Atlantiques', + '65'=>'des Hautes-Pyrénées', + '66'=>'des Pyrénées-Orientales', + '67'=>'du Bas-Rhin', + '68'=>'du Haut-Rhin', + '69'=>'du Rhône', + '70'=>'de la Haute-Saône', + '71'=>'de la Saône-et-Loire', + '72'=>'de la Sarthe', + '73'=>'de la Savoie', + '74'=>'de la Haute-Savoie', + '75'=>'de Paris', + '76'=>'de la Seine-Maritime', + '77'=>'de la Seine-et-Marne', + '78'=>'des Yvelines', + '79'=>'des Deux-Sèvres', + '80'=>'de la Somme', + '81'=>'du Tarn', + '82'=>'du Tarn-et-Garonne', + '83'=>'du Var', + '84'=>'du Vaucluse', + '85'=>'de la Vendée', + '86'=>'de la Vienne', + '87'=>'de la Haute-Vienne', + '88'=>'des Vosges', + '89'=>'de l\'Yonne', + '90'=>'du Territoire de Belfort', + '91'=>'de l\'Essonne', + '92'=>'des Hauts-de-Seine', + '93'=>'de la Seine-Saint-Denis', + '94'=>'du Val-de-Marne', + '95'=>'du Val-d\'Oise', + '971'=>'de la Guadeloupe', + '972'=>'de la Martinique', + '973'=>'de la Guyane', + '974'=>'de la Réunion', + '975'=>'de Saint-Pierre-et-Miquelon', + '976'=>'de Mayotte', + '985'=>'de Mayotte', // Codification au Bodacc + '986'=>'de Wallis-et-Futuna', + '987'=>'de la Polynésie-Française', + '988'=>'de la Nouvelle-Calédonie', + ); + + /**Nature d'établissements*/ + private static $tabNature = array( '20'=>'Petit magasin (moins de 300m²)', + '21'=>'Magasin (de 300m² à 400m²)', + '22'=>'Grande surface (de 400 à 2500m²)', + '23'=>'Très grande surface (plus de 2500m²)', + '91'=>'Base d\'activité sur chantiers', + '92'=>'Base d\'activité sur marchés', + '93'=>'Base d\'activité en clientèle', + '99'=>'Autre'); + + /**Régions du code officiel géographique*/ + private static $tabRegion = array( '1'=>'Guadeloupe', + '2'=>'Martinique', + '3'=>'Guyane', + '4'=>'Réunion', + '11'=>'Ile-de-France', + '21'=>'Champagne-Ardenne', + '22'=>'Picardie', + '23'=>'Haute-Normandie', + '24'=>'Centre', + '25'=>'Basse-Normandie', + '26'=>'Bourgogne', + '31'=>'Nord-Pas-de-Calais', + '41'=>'Lorraine', + '42'=>'Alsace', + '43'=>'Franche-Comté', + '52'=>'Pays de la Loire', + '53'=>'Bretagne', + '54'=>'Poitou-Charentes', + '72'=>'Aquitaine', + '73'=>'Midi-Pyrénées', + '74'=>'Limousin', + '82'=>'Rhône-Alpes', + '83'=>'Auvergne', + '91'=>'Languedoc-Roussillon', + '93'=>'Provence Alpes Côte d Azur', + '94'=>'Corse', + '98'=>'Territoire d outre-mer (TOM)', + '99'=>'Etranger'); + + /**Tranches de Chiffre d'Affaires INSEE + **/ + private static $tabTCA = array( '0'=>'N/C', + '1'=>'de 500 000 à 1 ME', + '2'=>'de 1 à 2 ME', + '3'=>'de 2 à 5 ME', + '4'=>'de 5 à 10 ME', + '5'=>'de 10 à 20 ME', + '6'=>'de 20 à 50 ME', + '7'=>'de 50 à 100 ME', + '8'=>'de 100 à 200 ME', + '9'=>'plus de 200 ME' + ); + + /** Tranche de CA Export **/ + private static $tabTCAexp = array( '0'=>'0%', + '1'=>'moins de 5%', + '2'=>'de 5 à 25%', + '3'=>'de 25 à 50%', + '4'=>'plus de 50%', + ); + + /**Tranche d'habitants de commune détaillée*/ + private static $tabTCD=array( '1'=>'Commune de moins de 50 habitants', + '2'=>'Commune de 50 à 99 habitants', + '3'=>'Commune de 100 à 149 habitants', + '4'=>'Commune de 150 à 199 habitants', + '5'=>'Commune de 200 à 249 habitants', + '6'=>'Commune de 250 à 299 habitants', + '7'=>'Commune de 300 à 399 habitants', + '8'=>'Commune de 400 à 499 habitants', + '11'=>'Commune de 500 à 699 habitants', + '12'=>'Commune de 700 à 999 habitants', + '13'=>'Commune de 1000 à 1499 habitants', + '14'=>'Commune de 1500 à 1999 habitants', + '15'=>'Commune de 2000 à 2499 habitants', + '16'=>'Commune de 2500 à 2999 habitants', + '17'=>'Commune de 3000 à 3999 habitants', + '18'=>'Commune de 4000 à 4999 habitants', + '21'=>'De 5 000 à 6 999 habitants', + '22'=>'De 7 000 à 9 999 habitants', + '31'=>'De 10 000 à 14 999 habitants', + '32'=>'De 15 000 à 19 999 habitants', + '41'=>'De 20 000 à 24 999 habitants', + '42'=>'De 25 000 à 29 999 habitants', + '43'=>'De 30 000 à 39 999 habitants', + '44'=>'De 40 000 à 49 999 habitants', + '51'=>'De 50 000 à 69 999 habitants', + '52'=>'De 70 000 à 99 999 habitants', + '61'=>'De 100 000 à 149 999 habitants', + '62'=>'De 150 000 à 199 999 habitants', + '71'=>'De 200 000 à 299 999 habitants', + '72'=>'De 300 000 à 499 999 habitants', + '73'=>'De 500 000 à 1 499 999 habitants', + '80'=>'Plus de 1 500 000 habitants'); + + /**Tranches d'effectifs INSEE*/ + private static $tabEffectif=array( 0=>'N/C', + 1=>'de 1 à 2 salarié(s)', + 2=>'de 3 à 5 salariés', + 3=>'de 6 à 9 salariés', + 11=>'de 10 à 19 salariés', + 12=>'de 20 à 49 salariés', + 21=>'de 50 à 99 salariés', + 22=>'de 100 à 199 salariés', + 31=>'de 200 à 249 salariés', + 32=>'de 250 à 499 salariés', + 41=>'de 500 à 999 salariés', + 42=>'de 1 000 à 1 999 salariés', + 51=>'de 2 000 à 4 999 salariés', + 52=>'de 5 000 à 9 999 salariés', + 53=>'plus de 10 000 salariés'); + + /**Libellé des singularités INSEE*/ + private static $tabSingularite=array('1'=>'Propiétaire Exploitant direct', + '2'=>'Locataire Gérant', + '10'=>'Loueur de fonds', + '30'=>'Unité singulière de première espèce: avocats assocés, stations services sous mandat..', + '31'=>'Associé d\'exploitation en commun; ce groupe comprend notamment: associé de société de fait, associé d\'indivision', + '33'=>'Employeur non exploitant: prestataire de personnel, gérant mandataire', + '34'=>'Membre d\'une société civile professionnelle', + '40'=>'Siège d\'une unité SIREN de droit privé sans activité', + '41'=>'Siège d\'un organisme public sans activité', + '42'=>'Siège d\'un établissement public local non doté de l\'autonomie comptable: une partie des centres communaux d\'action sociale, une partie des caisses des écoles', + '43'=>'Sièges de domiciliation', + '52'=>'Sans domicile fixe', + '60'=>'Activité occasionnelle ou accessoire: Expert auprès des tribunaux, médecin, infirmier, pharmacien remplçant, avocat stagiaire, sportif amateur', + '70'=>'Activité en location (autre que le fond de commerce): Exploitant de terrain de camping, location de garage ou parking, locations de meublés, location de terres agricoles', + '80'=>'Gestion immobilière de biens propres: syndicats de copropriétaires', + '90'=>'Unité singulière de seconde espèce: établissement d\'une entreprise installée à Monaco, siège à l\'etranger de sociétés, associé gérant de sociétés'); + + /**Libellé des origines de création INSEE*/ + private static $tabOrigine=array( + '0'=>'Non renseigné', + '1'=>'Création pure', + '2'=>'Création suite à déménagement', // Création S&D du 20/04/2011 ancien 'Réinstallation après transfert' + '3'=>'Achat', + '4'=>'Apport', + '5'=>'Reprise au conjoint ou apport reçu', + '6'=>'Prise en location-gérance', + '7'=>'Partage', + '8'=>'Reprise', + '9'=>'Autre modalité d\'acquisition', + 'A'=>'Reprise globale d\'une exploitation agricole', + 'B'=>'Poursuite de l\'exploitation agricole par le conjoint', + 'C'=>'Transfert de propriété d\'une exploitation agricole', + 'D'=>'Apport d\'exploitation(s) agricole(s) individuelle(s)', + 'E'=>'Reprise totale ou partielle d\'exploitation individuelle', + ); + + private static $tabEven=array( 'i110'=>'Création d\'une entreprise', + 'i120'=>'Réactivation d\'une entreprise', + 'i125'=>'Réactivation d\'une entreprise suite à une mise à jour du répertoire', + 'i130'=>'Création d\'un établissement', + 'i145'=>'Reprise d\'activité dans un établissement suite à une mise à jour du répertoire', + 'i400'=>'Suppression d\'un double', + 'i410'=>'Cessation juridique de l\'entreprise', + 'i420'=>'Absence d\'activité de l\'entreprise (cessation économique de l\'entreprise)', + 'i425'=>'Absence d\'activité d\'une entreprise suite à une mise à jour au répertoire', + 'i430'=>'Fermeture d\'un établissement', + 'i435'=>'Fermeture d\'un établissement suite à une mise à jour au répertoire', + 'i510'=>'Création de l\'établissement d\'arrivée et cessation de l\'établissement de départ dans le cadre d\'un transfert', + 'i520'=>'Création de l\'établissement d\'arrivée et modification de l\'établissement de départ dans le cadre d\'un transfert', + 'i530'=>'Modification de l\'établissement d\'arrivée et cessation de l\'établissement de départ dans le cadre d\'un transfert', + 'i540'=>'Modification de l\'établissement d\'arrivée et modification de l\'établissement de départ dans le cadre d\'un transfert', + 'i610'=>'Modification d\'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production', + 'i620'=>'Modification d\'activité au niveau du SIREN associé à une désactivation économique par suppression de moyens de production', + 'i621'=>'Modification d\'activité du SIREN associé à une désactivation économique par suppression de moyens de production suite à une correction d\'erreur', + 'i631'=>'Autre modification d\'activité du SIREN associé', + 'i640'=>'Modification d\'activité au niveau de l\'établissement associée à une activation économique par adjonction de moyens de production', + 'i650'=>'Modification d\'activité au niveau de l\'établissement associée à une désactivation économique par suppression de moyens de production', + 'i661'=>'Autre modification d\'activité au niveau de l\'établissement', + 'i710'=>'Modification de l\'identification du SIREN', + 'i711'=>'Modification de l\'identification du SIREN suite à correction d\'erreur', + 'i720'=>'Modification de l\'adresse ou de l\'identification de l\'établissement', + 'i780'=>'Autre modification entraînant la mise à jour d\'au moins une variable du répertoire', + 'i781'=>'Autre modification entraînant la mise à jour d\'au moins une variable du répertoire suite à correction d\'erreur', + ); + + private $tabCodeVoie=array(); + private $tabCodesNaf=array(); + private $tabCodesNafa=array(); + private $tabCodesNace=array(); + + private $body=''; + private $codeRetour=0; + private $header=array(); + + private $iDb; + private $iDbInsee; + private $iDbSD; + private $iBodacc; + + // Plan de redressement ou de continuation + private $debutPlan; // Date de début/jugement/publication du plan SSAAMMJJ + private $dureePlan; // Durée du plan en mois + private $finPlan; // Date de fin du plan SSAAMMJJ + + // Appel de jugement + private $appelJugement=false; // Présence d'un appel de jugement + + public function __construct() { + $this->iDb=new WDB(); + //$this->iDb->setCharSet('UTF-8'); + $this->iDbInsee=new WDB('insee'); + //$this->iDbInsee->setCharSet('UTF-8'); + $this->iDbSD=new WDB('sdv1'); + //$this->iDbSD->setCharSet('UTF-8'); + $this->tabCodeVoie=$this->getTabCodeVoie(); + $this->iBodacc=new MBodacc(); + } + +/** Test de la validité du siren demandé + * @param int SIREN à tester + * @param int NIC (facultatif) + * @param mixed Message textuel d'erreur à afficher en cas d'erreur ou false + * @return mixed true, false ou Message d'erreur passé en paramètre + */ +function valideSiren($siren, $nic='', $erreur=false) { + + /** Si le siren est de taille < à 9, on ajoute des 0 significatifs **/ + switch (strlen($siren)) { + case 1: $siren='00000000'.$siren; break; + case 2: $siren='0000000'.$siren; break; + case 3: $siren='000000'.$siren; break; + case 4: $siren='00000'.$siren; break; + case 5: $siren='0000'.$siren; break; + case 6: $siren='000'.$siren; break; + case 7: $siren='00'.$siren; break; + case 8: $siren='0'.$siren; break; + } + + if (strlen($nic)>0) { + switch (strlen($nic)) { + case 1: $nic='0000'.$nic; break; + case 2: $nic='000'.$nic; break; + case 3: $nic='00'.$nic; break; + case 4: $nic='0'.$nic; break; + } + } + + + if (!valideData($siren, 9, 9,'N')) //Siren non précisé ou incorrect. + return $erreur; + elseif ($siren*1==0) // Siren vide + return $erreur; + else + { + if (!isset($nic) || trim($nic)=='') + { + $somme=0; + for ($i=0; $i<=8; $i+=2) // Traitement IMPAIR + $somme+=(integer)substr($siren,$i,1); + + for ($i=1; $i<=7; $i+=2) + { // Traitement PAIR + $var_tmp=(string)(2*((integer)substr($siren,$i,1))); + $som_tmp=0; + for($j=0;$jArray ( + ** [adrComp0] => Maison des associations + ** [num] => 33 + ** [typeVoie] => R + ** [libVoie] => Louis Blanc + ** [cp] => ... + ** [ville] => ... Si contenu dans l'adresse + ** )+ ** + ** @param string $strLigneDAdresse La ligne d'adresse textuelle (ex : Maison des associations, 33 rue Louis Blanc + ** @return array tableau contenant l'adresse structurée ici + **/ + public function structureVoie($strLigneDAdresse) { + $tabRet=$tabAdr=array(); + $strLigneDAdresse=trim($strLigneDAdresse); + if ($strLigneDAdresse=='') return $tabRet; + $tabLignes=explode(',', preg_replace('/,$/', '', $strLigneDAdresse)); + foreach ($tabLignes as $strLigneDAdresse) { + $strLigneDAdresse=trimAccent($strLigneDAdresse); + $strLigneDAdresse=preg_replace('/[^0-9a-zA-Z]/', ' ', $strLigneDAdresse); + $strLigneDAdresse=trim(preg_replace('/ +/', ' ', $strLigneDAdresse)); + //echo "1. Adresse nettoyées = $strLigneDAdresse".EOL; + $adrAvecCP=preg_match("/(.*)([0-9]{5,5}|[0-9][0-9] [0-9]{3,3})([\D]*)/", $strLigneDAdresse, $tabAdrTmp); + if ($adrAvecCP) { + //echo "Adresse avec Code Postal\n"; + //print_r($tabAdrTmp); + $strLigneDAdresse=trim($tabAdrTmp[1]); + $tabRet['cp']=$tabAdrTmp[2]; + $tabRet['ville']=trim(strtoupper($tabAdrTmp[3])); + }// else echo "Adresse sans Code Postal\n"; + $adrAvecNum=preg_match("/^([0-9]{1,4})(.*)/", $strLigneDAdresse, $tabAdrTmp); + if ($adrAvecNum) { + //echo "Adresse avec Numéro de voie\n"; + //print_r($tabAdrTmp); + $tabRet['num']=$tabAdrTmp[1]; + if (preg_match("/^\b(B|BIS|T|TER|Q|a|c|d|e|f|g|h|i|j|k|l|m|n|o|p|r|s)\b(.*)/i", $tabAdrTmp[2], $tabAdrTmp2)) + { //echo "Adresse avec Bis, Ter, Q...\n"; + //print_r($tabAdrTmp2); + $tabRet['indRep']=trim($tabAdrTmp2[1]); $typeVoie=trim($tabAdrTmp2[2]);} + else $typeVoie=trim($tabAdrTmp[2]); + } else $typeVoie=trim($strLigneDAdresse); + // On récupère le type de voie si possible et le libellé de la voie + $voieTrouvee=false; + foreach ($this->tabCodeVoie as $code=>$voie) { + if (preg_match("/^($voie |$voie".'s '."|$code )(.*)/i", $typeVoie, $tabAdrTmp)) { + //echo "Adresse avec type de voie\n"; + //print_r($tabAdrTmp); + $tabRet['typeVoie']=$code; + $tabRet['libVoie']=trim(strtoupper($tabAdrTmp[2])); + $voieTrouvee=true; + break; + } + } + if (!$voieTrouvee) $tabAdr[]=$typeVoie; + } + foreach ($tabAdr as $k=>$ligne) + $tabRet['adrComp'.$k]=trim(strtoupper($ligne)); + + if (!isset($tabRet['libVoie'])) { $tabRet['libVoie']=$ligne; unset($tabRet['adrComp'.$k]); } + + if (isset($tabRet['adrComp0'])) { + if ($tabRet['adrComp0']=='BIS' || $tabRet['adrComp0']=='B') { + $tabRet['indRep']='B'; + $tabRet['adrComp0']=''; + } elseif ($tabRet['adrComp0']=='TER' || $tabRet['adrComp0']=='T') { + $tabRet['indRep']='T'; + $tabRet['adrComp0']=''; + } + } + + return $tabRet; + } + + /** + * Liste des établissements par siren/nic + * @param string $siren + * @param string $nic + * @param int $deb + * @param int $nbRep + * @param int $maxRep + * @param int $dep + * @param int $actif + * @param int $siege + */ + public function getEtablissements($siren, $nic='', $deb=0, $nbRep=20, $maxRep=200, $dep=0, $actif=-1, $siege=null) + { + $this->setTabCodesNaf(); + $deb=$deb*1; + $dep=$dep*1; + $nbRep=$nbRep*1; + + $strInfo=''; + + $limit="LIMIT $deb, $nbRep"; + + $sqlInfo="'Etab' as Loc, e.id, e.source, e.source_id, e.triCode, e.autre_id, e.siren, e.nic, e.siege, ". + "e.raisonSociale, e.enseigne, e.sigle, e.adr_num, e.adr_btq, e.adr_typeVoie, e.adr_libVoie, ". + "e.adr_comp, e.adr_cp, e.adr_ville, e.tel, e.fax, e.cj, e.ape_etab, e.ape_entrep, e.teff_etab, ". + "CONCAT(e.siren, e.nic) as siret, e.actif, e.identite_pre, IF(e.siege=2,0.5,e.siege) AS triSiege"; + + $strActif=''; + if (intval($actif)==1) $strActif=' AND e.actif=1 '; + elseif (intval($actif)==0) $strActif=' AND e.actif=0 '; + + $strSiege=''; + if ($siege===null) $strSiege=''; + elseif ($siege==1) $strSiege=' e.siege=1 '; + elseif ($siege==0) $strSiege=' e.siege IN(0,2) '; + + //Search with "departement" + if ($dep>0 && $dep<99999) { + + if ($dep<96) $strDep='AND adr_cp BETWEEN '.$dep.'000 AND '.$dep.'999'; + elseif ($dep>9999) $strDep="AND adr_cp BETWEEN $dep AND $dep"; + else $strDep='AND adr_cp BETWEEN '.$dep.'00 AND '.$dep.'99'; + + $tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strDep $strActif $strSiege"); + $nbTot=$tabTmp[0][0]; + + $listeEtab=$this->iDb->select('etablissements e', $sqlInfo, + "siren=$siren $strDep $strActif $strSiege ORDER BY triSiege DESC, e.actif DESC,e.nic DESC $limit", false, MYSQL_ASSOC); + + } + //Search without NIC + elseif ($nic=='') { + + $tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren $strActif $strSiege"); + $nbTot=$tabTmp[0][0]; + + $listeEtab=$this->iDb->select('etablissements e', $sqlInfo, + "e.siren=$siren $strActif $strSiege ORDER BY triSiege DESC, e.actif DESC, e.nic DESC $limit", false, MYSQL_ASSOC); + + } + //Search with NIC + else { + + $tabTmp=$this->iDb->select('etablissements e', 'count(*)', "siren=$siren AND (nic=$nic OR siege=1) $strActif $strSiege"); + $nbTot=$tabTmp[0][0]; + + $listeEtab=$this->iDb->select('etablissements e', $sqlInfo, + "siren=$siren AND (nic=$nic OR siege=1) $strActif $strSiege ORDER BY triSiege DESC, e.actif DESC, e.nic DESC $limit", false, MYSQL_ASSOC); + + } + + // + if ($nbTot==0 && $actif==-1) { + + require_once 'Metier/sphinx/rechercheFonc.php'; + $liste = verificationDuSiret($siren); + if ($liste != false) { + //print 'Essayez :