diff --git a/scripts/rapportsTextes.php b/bin/clientRapportsTexte.php similarity index 97% rename from scripts/rapportsTextes.php rename to bin/clientRapportsTexte.php index aa9764aa..8976da87 100644 --- a/scripts/rapportsTextes.php +++ b/bin/clientRapportsTexte.php @@ -1,69 +1,69 @@ -> /home/scores/batch/shared/sources/log/rapportsTextesWeb.log - * 0 23 * * * /home/scores/batch/scripts/rapportsTextes.php -f >> /home/scores/batch/shared/sources/log/rapportsTextesFtp.log - */ -error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED); -ini_set('auto_detect_line_endings', true); - -// --- Define path to application directory -defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); - -// --- Define application environment -defined('APPLICATION_ENV') - || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); - -// --- Composer autoload -require_once realpath(__DIR__ . '/../vendor/autoload.php'); - -// --- Create application, bootstrap, and run -$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); - -$c = new Zend_Config($application->getOptions()); - -// Stockage Client => SD -$pathClientSend = '/home/scores/batch/shared/clients/fransbonhomme/send'; - -// Stockage SD => Client -$pathClientRecv = '/home/scores/batch/shared/clients/fransbonhomme/recv'; - -//Options -try { - $opts = new Zend_Console_Getopt(array( - 'help|?' => "Displays usage information.", - 'site-s' => "Rapports relatifs aux indiscore 2 et 3 de la journée courante ou depuis le SSAAMMJJ inclus", - 'ftp-s' => "Traitement des demandes par ftp", - 'file=s' => "Spécification du fichier de demande", - 'verbose|v' => "Mode bavard ou debug", - )); - $opts->parse(); -} catch (Zend_Console_Getopt_Exception $e) { - echo $e->getUsageMessage(); - exit; -} - -//Usage -if( isset($opts->help) || count($opts->getOptions())==0 ) -{ - echo "\n"."Spécifique FransBonhomme : rapports textes suite à demande fichier."."\n\n"; - echo $opts->getUsageMessage(); - exit; -} - +> /home/scores/batch/shared/sources/log/rapportsTextesWeb.log + * 0 23 * * * /home/scores/batch/scripts/rapportsTextes.php -f >> /home/scores/batch/shared/sources/log/rapportsTextesFtp.log + */ +error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED); +ini_set('auto_detect_line_endings', true); + +// --- Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); + +// --- Define application environment +defined('APPLICATION_ENV') + || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); + +// --- Composer autoload +require_once realpath(__DIR__ . '/../vendor/autoload.php'); + +// --- Create application, bootstrap, and run +$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); + +$c = new Zend_Config($application->getOptions()); + +// Stockage Client => SD +$pathClientSend = '/home/scores/batch/shared/clients/fransbonhomme/send'; + +// Stockage SD => Client +$pathClientRecv = '/home/scores/batch/shared/clients/fransbonhomme/recv'; + +//Options +try { + $opts = new Zend_Console_Getopt(array( + 'help|?' => "Displays usage information.", + 'site-s' => "Rapports relatifs aux indiscore 2 et 3 de la journée courante ou depuis le SSAAMMJJ inclus", + 'ftp-s' => "Traitement des demandes par ftp", + 'file=s' => "Spécification du fichier de demande", + 'verbose|v' => "Mode bavard ou debug", + )); + $opts->parse(); +} catch (Zend_Console_Getopt_Exception $e) { + echo $e->getUsageMessage(); + exit; +} + +//Usage +if( isset($opts->help) || count($opts->getOptions())==0 ) +{ + echo "\n"."Spécifique FransBonhomme : rapports textes suite à demande fichier."."\n\n"; + echo $opts->getUsageMessage(); + exit; +} + $db = Zend_Db::factory($c->profil->db->metier); -Zend_Db_Table::setDefaultAdapter($db); - -require_once APPLICATION_PATH.'/configs/config.php'; -require_once 'framework/fwk.php'; +Zend_Db_Table::setDefaultAdapter($db); + +require_once APPLICATION_PATH.'/configs/config.php'; +require_once 'framework/fwk.php'; require_once 'framework/common/chiffres.php'; require_once 'framework/common/dates.php'; require_once 'framework/mail/sendMail.php'; - -require_once 'Metier/Scores/MScores.php'; - -$tabCreation = array( + +require_once 'Metier/Scores/MScores.php'; + +$tabCreation = array( 'a'=>'N/D', 'a1' => 'Création', 'a2' => 'Création suite à déménagement', @@ -77,565 +77,564 @@ $tabCreation = array( 'aC' => 'Transfert de propriété de l\'exploitation agricole', 'aD' => 'Apport d\'exploitation(s) agricole(s) individuelle(s)', 'aE' => 'Reprise d\'exploitation agricole individuelle', -); - -$tabTypeExploitation = array( - 0 => 'N/D', - 1 => "Locataire du fond de commerce", - 2 => "Loueur du fond de commerce", - 3 => "Prestation de personnel", - 10 => "Exploitation directe" -); - -$tabFichLigneCmd=array(); -$modeDebug=false; -$iDb=new WDB(); -$iInsee = new Metier_Insee_MInsee($iDb); - -$message=''; - -$tdate = new WDate(); - -// --- Génération du fichier de demande depuis les logs de consultation indiscore2, indiscore3 -if ($opts->site) { - if ($opts->site === true) { - $dateDemandes = date('Ymd'); - } else { - $dateDemandes = $opts->site; - } - - $fichierJour = 'extranet'.$dateDemandes; - $strDates = 'AND dateHeure>='.$dateDemandes.'000000'; - - $tabTmp = $iDb->select( - 'sdv1.logs l, sdv1.utilisateurs u', - 'LPAD(siren,9,0) AS siren, dateHeure', - "l.login=u.login AND u.login<>'fransbonrapports' AND u.idClient=93 AND l.page IN ('indiscore2','indiscore3') $strDates", false, MYSQL_ASSOC); - echo date('Y/m/d H:i:s') . " - Nombre de rapports 1 et 2 sur l'extranet : ".count($tabTmp)."\n"; - - $strDemandes=''; - if ( count($tabTmp)>0 ) { - foreach ($tabTmp as $i=>$demande) { - echo date('Y/m/d H:i:s') . " - " .$demande['siren'] ."\n"; - $strDemandes.= $demande['siren'].' '.EOL; - } - file_put_contents($pathClientSend . '/' . $fichierJour, $strDemandes); - - $tabFichLigneCmd[] = $fichierJour; - } -} - -// --- Fichier de demande par FTP -if ($opts->ftp) { - //client, name, depotType, depotDate, depotFile, nbLines, dateInsert, dateExecute - $fluxinM = new Application_Model_Sdv1FluxFileIn(); - // --- Auto - if ($opts->ftp === true) { - // --- Detecter si la date n'est pas trop ancienne - $dateNow = new Zend_Date(); - $dateIn1 = $dateNow->toString('yyyy-MM-dd HH:mm:ss'); - - $diff = $dateNow->sub(28, Zend_Date::HOUR); - $dateIn2 = $diff->toString('yyyy-MM-dd HH:mm:ss'); - - $sql = $fluxinM->select() - ->where('client=?','fransbonhomme') - ->where('name=?', 'RAPPORT') - ->where('depotType=?','FTP') - ->where('dateExecute=?','0000-00-00 00:00:00') - ->where("dateInsert BETWEEN '".$dateIn2."' AND '".$dateIn1."' ") - ->order('dateInsert DESC'); - - $pitems = $fluxinM->fetchAll($sql); - - if ( $pitems->count()==0 ) { - echo date('Y-m-d H:i:s')." : Aucun traitement à réaliser.".PHP_EOL; - exit; - } - - foreach ($pitems as $p) { - $tabFichLigneCmd[] = $p->depotFile; - break; - } - } - // --- Manuel - else { - $sql = $fluxinM->select() - ->where('client=?','fransbonhomme') - ->where('name=?', 'RAPPORT') - ->where('depotType=?','FTP') - ->where('depotFile=?', $opts->ftp) - ->order('dateInsert DESC'); - $p = $fluxinM->fetchRow($sql); - if ($p !== null) { - $tabFichLigneCmd[] = $p->depotFile; - } - } -} - -// --- Fichier de demande manuel -if ($opts->file) { - $tabFichLigneCmd[] = $opts->file; -} - -// --- Traitement des fichiers en demande -if (count($tabFichLigneCmd) > 0) { - foreach ($tabFichLigneCmd as $fichierIn) { - $dateBegin = date('YmdHis'); - - if ( !file_exists($pathClientSend.'/'.$fichierIn) ) { - die("Erreur fichier '$fichierIn' inexistant !\n"); - } - $dateIn = date("dmy", filemtime($pathClientSend.'/'.$fichierIn)); - - $fp = fopen($pathClientSend.'/'.$fichierIn, 'r'); - if (!$fp) { - echo date('Y-m-d H:i:s') . " - Impossible de lire le fichier !"."\n"; - exit; - } - - // Lecture des lignes pour insertion en surveillance score - $nbLinesTotal = 0; - while (($ligne = fgets($fp)) !== false) { - $nbLinesTotal++; - - $siren = substr($ligne, 0, 9); - if (!$iInsee->valideSiren($siren)) { - continue; - } - $ref = substr($ligne, 9, 10); - echo "$fichierIn\t$siren\t$ref"; - - // Mise sous surveillances - if (empty($ref)) { - $ref = $siren; - } - $login = 'fransbonsurvrapports'; - $survM = new Application_Model_JoSurveillancesSite(); - $survSql = $survM->select()->where('source=?', 'annonces') - ->where('login=?', $login) - ->where('siren=?', $siren); - $survResult = $survM->fetchRow($survSql); - $done = 0; - - if ($survResult === null) { - $data = array( - 'source' => 'annonces', - 'login' => $login, - 'email' => 'contentieux@fransbonhomme.fr', - 'siren' => $siren, - 'nic' => 0, - 'ref' => $ref, - 'dateAjout' => date('Y-m-d'), - 'dateSuppr' => '0000-00-00', - 'encoursClient' => 0, - 'rs' => '', - 'cp' => 0, - 'ville' => '', - 'dateDerEnvoi' => '0000-00-00 00:00:00', - ); - try { - $done = $survM->insert($data); - } catch (Zend_Db_Exception $e) {} - } else { - try { - $data = array( - 'ref' => $ref, - ); - $done = $survM->update($data, array( - "source='annonces'", - "login='".$login."'", +); + +$tabTypeExploitation = array( + 0 => 'N/D', + 1 => "Locataire du fond de commerce", + 2 => "Loueur du fond de commerce", + 3 => "Prestation de personnel", + 10 => "Exploitation directe" +); + +$tabFichLigneCmd=array(); +$modeDebug=false; +$iDb=new WDB(); +$iInsee = new Metier_Insee_MInsee($iDb); + +$message=''; + +$tdate = new WDate(); + +// --- Génération du fichier de demande depuis les logs de consultation indiscore2, indiscore3 +if ($opts->site) { + if ($opts->site === true) { + $dateDemandes = date('Ymd'); + } else { + $dateDemandes = $opts->site; + } + + $fichierJour = 'extranet'.$dateDemandes; + $strDates = 'AND dateHeure>='.$dateDemandes.'000000'; + + $tabTmp = $iDb->select( + 'sdv1.logs l, sdv1.utilisateurs u', + 'LPAD(siren,9,0) AS siren, dateHeure', + "l.login=u.login AND u.login<>'fransbonrapports' AND u.idClient=93 AND l.page IN ('indiscore2','indiscore3') $strDates", false, MYSQL_ASSOC); + echo date('Y/m/d H:i:s') . " - Nombre de rapports 1 et 2 sur l'extranet : ".count($tabTmp)."\n"; + + $strDemandes=''; + if ( count($tabTmp)>0 ) { + foreach ($tabTmp as $i=>$demande) { + echo date('Y/m/d H:i:s') . " - " .$demande['siren'] ."\n"; + $strDemandes.= $demande['siren'].' '.EOL; + } + file_put_contents($pathClientSend . '/' . $fichierJour, $strDemandes); + + $tabFichLigneCmd[] = $fichierJour; + } +} + +// --- Fichier de demande par FTP +if ($opts->ftp) { + //client, name, depotType, depotDate, depotFile, nbLines, dateInsert, dateExecute + $fluxinM = new Application_Model_Sdv1FluxFileIn(); + // --- Auto + if ($opts->ftp === true) { + // --- Detecter si la date n'est pas trop ancienne + $dateNow = new Zend_Date(); + $dateIn1 = $dateNow->toString('yyyy-MM-dd HH:mm:ss'); + + $diff = $dateNow->sub(28, Zend_Date::HOUR); + $dateIn2 = $diff->toString('yyyy-MM-dd HH:mm:ss'); + + $sql = $fluxinM->select() + ->where('client=?','fransbonhomme') + ->where('name=?', 'RAPPORT') + ->where('depotType=?','FTP') + ->where('dateExecute=?','0000-00-00 00:00:00') + ->where("dateInsert BETWEEN '".$dateIn2."' AND '".$dateIn1."' ") + ->order('dateInsert DESC'); + + $pitems = $fluxinM->fetchAll($sql); + + if ( $pitems->count()==0 ) { + echo date('Y-m-d H:i:s')." : Aucun traitement à réaliser.".PHP_EOL; + exit; + } + + foreach ($pitems as $p) { + $tabFichLigneCmd[] = $p->depotFile; + break; + } + } + // --- Manuel + else { + $sql = $fluxinM->select() + ->where('client=?','fransbonhomme') + ->where('name=?', 'RAPPORT') + ->where('depotType=?','FTP') + ->where('depotFile=?', $opts->ftp) + ->order('dateInsert DESC'); + $p = $fluxinM->fetchRow($sql); + if ($p !== null) { + $tabFichLigneCmd[] = $p->depotFile; + } + } +} + +// --- Fichier de demande manuel +if ($opts->file) { + $tabFichLigneCmd[] = $opts->file; +} + +// --- Traitement des fichiers en demande +if (count($tabFichLigneCmd) > 0) { + foreach ($tabFichLigneCmd as $fichierIn) { + $dateBegin = date('YmdHis'); + + if ( !file_exists($pathClientSend.'/'.$fichierIn) ) { + die("Erreur fichier '$fichierIn' inexistant !\n"); + } + $dateIn = date("dmy", filemtime($pathClientSend.'/'.$fichierIn)); + + $fp = fopen($pathClientSend.'/'.$fichierIn, 'r'); + if (!$fp) { + echo date('Y-m-d H:i:s') . " - Impossible de lire le fichier !"."\n"; + exit; + } + + // Lecture des lignes pour insertion en surveillance score + $nbLinesTotal = 0; + while (($ligne = fgets($fp)) !== false) { + $nbLinesTotal++; + + $siren = substr($ligne, 0, 9); + if (!$iInsee->valideSiren($siren)) { + continue; + } + $ref = substr($ligne, 9, 10); + echo "$fichierIn\t$siren\t$ref"; + + // Mise sous surveillances + if (empty($ref)) { + $ref = $siren; + } + $login = 'fransbonsurvrapports'; + $survM = new Application_Model_JoSurveillancesSite(); + $survSql = $survM->select()->where('source=?', 'annonces') + ->where('login=?', $login) + ->where('siren=?', $siren); + $survResult = $survM->fetchRow($survSql); + $done = 0; + + if ($survResult === null) { + $data = array( + 'source' => 'annonces', + 'login' => $login, + 'email' => 'contentieux@fransbonhomme.fr', + 'siren' => $siren, + 'nic' => 0, + 'ref' => $ref, + 'dateAjout' => date('Y-m-d'), + 'dateSuppr' => '0000-00-00', + 'encoursClient' => 0, + 'rs' => '', + 'cp' => 0, + 'ville' => '', + 'dateDerEnvoi' => '0000-00-00 00:00:00', + ); + try { + $done = $survM->insert($data); + } catch (Zend_Db_Exception $e) {} + } else { + try { + $data = array( + 'ref' => $ref, + ); + $done = $survM->update($data, array( + "source='annonces'", + "login='".$login."'", "siren=".$siren - )); - } catch (Zend_Db_Exception $e) {} - } - echo " - Surv=".$done; - echo "\n"; - - if (!$iDb->insert('jo.scores_surveillance', array('siren'=>$siren))) - { - if ( $iDb->getLastErrorNum()==1062 ) continue; - die('Erreur SQL #'.mysql_errno().':'.mysql_error().EOL); - } - } - - // --- Ecriture nombre d'entités total du fichier d'entrée - if ($opts->ftp) { - $fluxinM->update(array('nbLines' => $nbLinesTotal), 'id='.$p->id); - } - - echo date ('Y/m/d H:i:s') . " - Nombre de lignes du fichier '$fichierIn' : ".$nbLinesTotal."\n"; - // --- Retour au début du fichier - rewind($fp); - - // --- Génération du fichier de sortie - $fichierOut = $fichierIn.'.out'; - echo date('Y/m/d H:i:s') . " - Génération du fichier '$fichierOut'...".EOL; - $dateOut = date("dmy"); - - $nbLines = 0; - while (($ligne = fgets($fp)) !== false) { - $nbLines++; - echo date('Y/m/d H:i:s') . " - Ligne ".$nbLines."/".$nbLinesTotal.EOL; - - $siren = substr($ligne, 0, 9); - $ref = trim(substr($ligne, 9, 10)); - $rapport = ''; - - //Siren valide - if ($iInsee->valideSiren($siren)) { - $tabId = $iInsee->getIdentiteEntreprise($siren,0,0,false,false); - $siretOut = $tabId['SiretSiege']; - - $tabIndiscore = calculIndiScore($siren, 0, false, 2, false); - $note = $tabIndiscore['Indiscore20']; - $encours = round($tabIndiscore['encours']/1000)*1000; - } - // Siren Faux - else { - $siretOut = $note = $encours = 0; - } - - $siretIn=$siren.'00000'; - - //Entete - $entete = '02'; - $entete.= initstr($siretIn, 14, '0', ALIGN_RIGHT); // SIRET demandé - $entete.= initstr($siretOut, 14, '0', ALIGN_RIGHT); // SIRET réponse - $entete.= initstr($ref, 10); // Référence FransBonhomme - $entete.= initstr($dateIn, 6, '0', ALIGN_RIGHT); // Date demande - $entete.= initstr($dateOut, 6, '0', ALIGN_RIGHT); // Date réponse - $entete.= initstr($note, 2, '0', ALIGN_RIGHT); // Note - $entete.= initstr('', 2); // Filler 1 - $entete.= initstr($encours, 6, '0', ALIGN_RIGHT); // Encours en euros sans décimale - $entete.= initstr('00000004S et D', 63); // 7x0 + 4 (code Sté) + Nom Sté RC - //Fin Entete; - - //Rapport - if ( intval($siretOut)!=0 ) - { - $rapport =initstr('', 80).EOL; - $rapport.=initstr(' '.$tabId['Nom'], 80).EOL; - $rapport.=initstr(' '.$tabId['Nom2'].' '.$tabId['Sigle'].' '.$tabId['Enseigne'],80).EOL; - $rapport.=initstr(' '.preg_replace('/^0+/','',$tabId['Adresse']), 50). - initstr(' TEL : '.preg_replace('/[^0-9]/','',$tabId['Tel']), 30).EOL; - if (trim($tabId['Adresse2'])<>'') - $rapport.=initstr(' '.$tabId['Adresse2'], 80).EOL; - $rapport.=initstr(' '.$tabId['CP'].' '.$tabId['Ville'], 50). - initstr(' FAX : '.preg_replace('/[^0-9]/','',$tabId['Fax']), 30).EOL; - if ($tabId['PaysIso2']<>'FR') - $rapport.=initstr(' '.$tabId['Pays'], 80).EOL; - if (trim($tabId['Web'])<>'') - $rapport.=initstr(' WEB : '.$tabId['Web'], 80).EOL; - if (trim($tabId['Mail'])<>'') - $rapport.=initstr(' MEL : '.$tabId['Mail'], 80).EOL; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('SIRET : '. substr($tabId['SiretSiege'],0,3).' '. - substr($tabId['SiretSiege'],3,3).' '. - substr($tabId['SiretSiege'],6,3).' '. - substr($tabId['SiretSiege'],9,5).' '. - ' RCS : '.$tabId['numRC'].' '. - preg_replace('/^(TC |TI |TGI |TGIcc )/i','',$tabId['TribunalLib']), 80).EOL; - - /** Situation Juridique **/ - $dateRadiation=$tabId['dateRad']; - $situationjuridique=$tabId['SituationJuridique']; - $libSituation=''; - if (in_array(substr($situationjuridique,0,1), array('P', 'R')) ) - { - if(isset($dateRadiation) && $dateRadiation!='' && $dateRadiation!='0000-00-00'){ - $dateRad = $tdate->dateT('Ymd', 'd/m/Y', str_replace('-','',$dateRadiation)); - } - if ($situationjuridique=='P') - { - $libSituation.= 'En procédure collective'; - if($dateRad!=''){ $libSituation.= 'Radié du RCS le '.$dateRad; } - } - //Radiation - if($situationjuridique=='RR') - { - $libSituation.= 'Radié du RCS'; - if($dateRad!=''){ $libSituation.= ' le '.$dateRad; } - }elseif($situationjuridique=='RP'){ - $libSituation.= 'Radiation publiée'; - if($dateRad!=''){ $libSituation.= ' le '.$dateRad; } - } - } - elseif($tabId['EntActiveRCS']==1) { - $libSituation.= 'Actif au RCS'; - } - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('SITUA. JUR.: '.$libSituation, 80).EOL;//@todo multiligne - - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('FORME JUR. : '.$tabId['FJ'].' '.$tabId['FJ_lib'], 80).EOL;//@todo multiligne - - if ($tabId['Capital']>0) { - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('CAPITAL : '.number_format($tabId['Capital'],0,'.',' ').' '.$tabId['CapitalDev'], 80).EOL; - } - $rapport.=initstr('', 80).EOL; - $dateImm=str_replace('-','',$tabId['dateImmat']); - if (substr($dateImm,0,4)*1==0) $dateImm=$tabId['DateCreaEn']; - if (substr($dateImm,0,4)*1==0) $dateImm=$tabId['DateCreaEt']; - $rapport.=initstr('CREATION : '.$tdate->dateT('Ymd','M Y',$dateImm), 80).EOL; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('CODE NAF : '.$tabId['NafEnt'].' '.$tabId['NafEntLib'], 80).EOL;//@todo multiligne - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('ACTIVITE : ',80).EOL; - $rapport.=wordwrap($tabId['Activite'], 80, EOL).EOL;//@todo multiligne - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('ORIGINE DU FOND : '.$tabCreation['a'.$tabId['OrigineCreation']], 80).EOL;//@todo multiligne - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('TYPE D\'EXPLOITATION : '.$tabTypeExploitation[$tabId['TypeExploitation']*1], 80).EOL;//@todo multiligne - $rapport.=initstr('', 80).EOL; - - $nbEts=($tabId['NbEtab']*1)-1; - if ($nbEts<0) $nbEts=0; - $rapport.=initstr('NOMBRE D\'ETABLISSEMENTS SECONDAIRES : '.$nbEts, 80).EOL; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('DIRIGEANT 1: '.strtoupper($tabId['dir1Titre']), 80).EOL; - if (substr($tabId['dir1DateNaiss'],0,4)*1==0) $strNaiss=''; - else $strNaiss=' né(e) le '.$tdate->dateT('Y-m-d','d/m/Y',$tabId['dir1DateNaiss']); - $rapport.=initstr(' '.$tabId['dir1NomPrenom'].$strNaiss,80).EOL; - $rapport.=initstr('DIRIGEANT 2: '.strtoupper($tabId['dir2Titre']), 80).EOL; - if (substr($tabId['dir2DateNaiss'],0,4)*1==0) $strNaiss=''; - else $strNaiss=' né(e) le '.$tdate->dateT('Y-m-d','d/m/Y',$tabId['dir2DateNaiss']); - $rapport.=initstr(' '.$tabId['dir2NomPrenom'].$strNaiss,80).EOL; - $rapport.=initstr('', 80).EOL; - - $rapport.=initstr('GARANTIES',80).EOL; /**@todo MORE*/ - $tabBilans=$tabIndiscore['tabBilan']; - $devise=$tabBilans[0]['MONNAIE']; - //print_r($tabIndiscore);die(); - if (($tabIndiscore['NbBilansScore']*1)==0) { - $rapport.=initstr(' Néant',80).EOL; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('ELEMENTS FINANCIERS', 80).EOL; - $rapport.=initstr(' Néant',80).EOL; - } else { - $rapport.=initstr(' Elles sont représentées par la valeur brute au bilan',80).EOL; - $rapport.=initstr(' du fonds de commerce pour un montant de : '.sprintf("%27s", number_format($tabBilans[0]['AH'], 0, ',', ' '))." $devise",80).EOL; - $rapport.=initstr(' des constructions pour un montant de : '.sprintf("%27s", number_format($tabBilans[0]['AP'], 0, ',', ' '))." $devise",80).EOL; - $rapport.=initstr('', 80).EOL; - - $rapport.=initstr("ELEMENTS FINANCIERS (SOMMES EN $devise)", 80).EOL; - $rapport.=initstr(' '. $tdate->dateT('Ymd','d/m/Y',$tabBilans[0]['DATE_CLOTURE']) - .' '. $tdate->dateT('Ymd','d/m/Y',$tabBilans[1]['DATE_CLOTURE']) - .' '. $tdate->dateT('Ymd','d/m/Y',$tabBilans[2]['DATE_CLOTURE']), 80).EOL; - $rapport.=initstr(' '. $tabBilans[0]['DUREE_MOIS'].' mois' - .' '. $tabBilans[1]['DUREE_MOIS'].' mois' - .' '. $tabBilans[2]['DUREE_MOIS'].' mois', 80).EOL; - $rapport.=initstr('CA : '. sprintf("%14s", number_format($tabBilans[0]['FL'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['FL'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['FL'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('CA EXPORT : '. sprintf("%14s", number_format($tabBilans[0]['FK'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['FK'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['FK'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('RESULTAT COURANT : '. sprintf("%14s", number_format($tabBilans[0]['GW'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['GW'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['GW'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('RESULTAT NET : '. sprintf("%14s", number_format($tabBilans[0]['HN'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['HN'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['HN'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('FONDS PROPRES : '. sprintf("%14s", number_format($tabBilans[0]['DL'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['DL'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['DL'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('FRAIS FINANCIERS : '. sprintf("%14s", number_format($tabBilans[0]['GU'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['GU'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['GU'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('TOTAL DETTES : '. sprintf("%14s", number_format($tabBilans[0]['EC'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['EC'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['EC'], 0, ',', ' ')), 80).EOL; - $rapport.=initstr('EFFECTIFS : '. sprintf("%14s", number_format($tabBilans[0]['YP'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[1]['YP'], 0, ',', ' ')) - .' '. sprintf("%14s", number_format($tabBilans[2]['YP'], 0, ',', ' ')), 80).EOL; - } - - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('PARTENAIRES FINANCIERS', 80).EOL; - $mBanque = new Metier_Partenaires_MBanques($iDb); - $tabBanque = $mBanque->getListeBanques($siren); - if (count($tabBanque)==0) { - $rapport.=initstr(' Aucun partenaire n\'est référencé dans notre base.',80).EOL; - } else { - foreach ($tabBanque as $i=>$lien) { - $rapport.=initstr(' '.$lien['libBanque'], 80).EOL; - if ($i>=3) break; - } - } - - /** § ANNONCES **/ - $bodc=false; - $nbAnn=0; - $tabAnn=$iInsee->getAnnoncesLegales($siren); - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('ANNONCES LEGALES', 80).EOL; - if (count($tabAnn)>0) { - foreach ($tabAnn as $i=>$depot) { - $annDate=$tdate->dateT('Y-m-d','d/m/Y',$depot['DateParution']); - foreach ($depot['evenements'] as $even) { - $annEve=$even['CodeEven']; - if ($annEve>=3000 && $annEve<4000) { - if ($bodc) continue; - $bodc=true; - } - $annLib=$even['LibEven']; - $rapport.=initstr(" $annDate $annLib",80).EOL; - $annDate=' '; - } - $nbAnn++; - if ($nbAnn>=6) break; - } - } else - $rapport.=initstr(' Aucune annonce pour cette entreprise.',80).EOL; - - /** § dirigeance **/ - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('DIRIGEANCE', 80).EOL; - - /** § Liens **/ - $mLiens = new SdMetier_Liens_Base($siren, 'siren'); - $tabAct = $tabPar = array(); - try { - $tabAct = $mLiens->getActionnaires(); - } catch(Exception $e) {} - try { - $tabPart = $mLiens->getParticipations(); - } catch(Exception $e) {} - if (count($tabAct)==0 && count($tabPart)==0) - $rapport.=initstr(' A notre connaissance, l\'entreprise est indépendante.',80).EOL; - else { - foreach ($tabAct as $i=>$lien) { - $rapport.=initstr(' ACTIONNAIRE à '.$lien->PDetention.' % : '.$lien->RS.' ('.$lien->siren.')', 80).EOL; - if ($i>=3) break; - } - foreach ($tabPart as $i=>$lien) { - $rapport.=initstr(' FILIALE à '.$lien->PDetention.' % : '.$lien->RS.' ('.$lien->siren.')', 80).EOL; - if ($i>=3) break; - } - } - $rapport.=initstr('', 80).EOL; - - /** § commentaires **/ - $nbLiP=$nbLiM=0; - $startLi = false; - $startPaiement = 0; - foreach ($tabIndiscore['tabCommentaires'] as $i=>$txt) { - if ($i==5000) continue; - - if ($i==10001000 || $startPaiement==1) { - $rapport.= initstr('', 80).EOL; - $startPaiement++; - } else { - $startPaiement=0; - } - - if ($i==10000700 || $i==10000800) { - $rapport.= initstr('', 80).EOL; - $startLi = true; - } else { - $startLi = false; - } - - $ligneLi = false; - if (preg_match('/LI\+/i', $txt)) { $ligneLi=true; $nbLiP++; } - elseif (preg_match('/LI\-/i', $txt)) { $ligneLi=true; $nbLiM++; } - - if (!$startLi && !$ligneLi && $startPaiement==0) { - continue; - } - //Plus de 5 LI, on arrete - if ( ($nbLiP>5 && $ligneLiP) || ($nbLiM>5 && $ligneLiM) ) { - continue; - } - //echo "Ligne : $i => $txt\n"; - - /*$txt = strtr($txt, array( - ''=>'+', - ''=>'-', - ' '=>' ', - '€'=>'E', - '€'=>'E', - chr(160)=>' ', - ));*/ - //$txt = str_replace(array('','',' ','€','€',chr(160)), array('+','-',' ','E','E',' '), $txt); - $txt = str_replace(array('','','€'), array('+','-','E'), $txt); - //echo ".=> $txt\n"; - $txt = html_entity_decode($txt, ENT_QUOTES, 'UTF-8'); - //echo ".=> $txt\n"; - $txt = wordwrap(strip_tags($txt),80,EOL).EOL; - //echo ".=> $txt\n"; - $rapport.= $txt; - } - - /** § scoring **/ - if ($tabIndiscore['Indiscore20']==0) $strTendance=''; - else $strTendance=' (Tendance '.$tabIndiscore['TendanceIndiscore'].')'; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('COTATION INDISCORE : '.$tabIndiscore['Indiscore20'].'/20 '.$strTendance, 80).EOL; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('LIMITE DE CREDIT : '.(round($tabIndiscore['encours']/1000)*1000).' EUR', 80).EOL; - - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('', 80).EOL; - $rapport.=initstr('', 80).EOL; - - $rapport = utf8_decode($rapport); - - } //Fin rapport - - // --- Ecriture ligne dans le fichier - file_put_contents($pathClientRecv.'/'.$fichierOut, $entete.EOL.$rapport, FILE_APPEND); - - // --- Insertion log de facturation - if ($opts->ftp!==null || $opts->file!==null) { - $logsM = new Application_Model_Sdv1Logs(); - try { - $logsM->insert(array( - 'login' => 'fransbonrapports', - 'page' => 'indiscore3', - 'siren' => $siren, - 'nic' => substr($siretOut,9,5), - 'params' => '', + )); + } catch (Zend_Db_Exception $e) {} + } + echo " - Surv=".$done; + echo "\n"; + + if (!$iDb->insert('jo.scores_surveillance', array('siren'=>$siren))) + { + if ( $iDb->getLastErrorNum()==1062 ) continue; + die('Erreur SQL #'.mysql_errno().':'.mysql_error().EOL); + } + } + + // --- Ecriture nombre d'entités total du fichier d'entrée + if ($opts->ftp) { + $fluxinM->update(array('nbLines' => $nbLinesTotal), 'id='.$p->id); + } + + echo date ('Y/m/d H:i:s') . " - Nombre de lignes du fichier '$fichierIn' : ".$nbLinesTotal."\n"; + // --- Retour au début du fichier + rewind($fp); + + // --- Génération du fichier de sortie + $fichierOut = $fichierIn.'.out'; + echo date('Y/m/d H:i:s') . " - Génération du fichier '$fichierOut'...".EOL; + $dateOut = date("dmy"); + + $nbLines = 0; + while (($ligne = fgets($fp)) !== false) { + $nbLines++; + echo date('Y/m/d H:i:s') . " - Ligne ".$nbLines."/".$nbLinesTotal.EOL; + + $siren = substr($ligne, 0, 9); + $ref = trim(substr($ligne, 9, 10)); + $rapport = ''; + + //Siren valide + if ($iInsee->valideSiren($siren)) { + $tabId = $iInsee->getIdentiteEntreprise($siren,0,0,false,false); + $siretOut = $tabId['SiretSiege']; + + $tabIndiscore = calculIndiScore($siren, 0, false, 2, false); + $note = $tabIndiscore['Indiscore20']; + $encours = round($tabIndiscore['encours']/1000)*1000; + } + // Siren Faux + else { + $siretOut = $note = $encours = 0; + } + + $siretIn=$siren.'00000'; + + //Entete + $entete = '02'; + $entete.= initstr($siretIn, 14, '0', ALIGN_RIGHT); // SIRET demandé + $entete.= initstr($siretOut, 14, '0', ALIGN_RIGHT); // SIRET réponse + $entete.= initstr($ref, 10); // Référence FransBonhomme + $entete.= initstr($dateIn, 6, '0', ALIGN_RIGHT); // Date demande + $entete.= initstr($dateOut, 6, '0', ALIGN_RIGHT); // Date réponse + $entete.= initstr($note, 2, '0', ALIGN_RIGHT); // Note + $entete.= initstr('', 2); // Filler 1 + $entete.= initstr($encours, 6, '0', ALIGN_RIGHT); // Encours en euros sans décimale + $entete.= initstr('00000004S et D', 63); // 7x0 + 4 (code Sté) + Nom Sté RC + //Fin Entete; + + //Rapport + if ( intval($siretOut)!=0 ) + { + $rapport =initstr('', 80).EOL; + $rapport.=initstr(' '.$tabId['Nom'], 80).EOL; + $rapport.=initstr(' '.$tabId['Nom2'].' '.$tabId['Sigle'].' '.$tabId['Enseigne'],80).EOL; + $rapport.=initstr(' '.preg_replace('/^0+/','',$tabId['Adresse']), 50). + initstr(' TEL : '.preg_replace('/[^0-9]/','',$tabId['Tel']), 30).EOL; + if (trim($tabId['Adresse2'])<>'') + $rapport.=initstr(' '.$tabId['Adresse2'], 80).EOL; + $rapport.=initstr(' '.$tabId['CP'].' '.$tabId['Ville'], 50). + initstr(' FAX : '.preg_replace('/[^0-9]/','',$tabId['Fax']), 30).EOL; + if ($tabId['PaysIso2']<>'FR') + $rapport.=initstr(' '.$tabId['Pays'], 80).EOL; + if (trim($tabId['Web'])<>'') + $rapport.=initstr(' WEB : '.$tabId['Web'], 80).EOL; + if (trim($tabId['Mail'])<>'') + $rapport.=initstr(' MEL : '.$tabId['Mail'], 80).EOL; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('SIRET : '. substr($tabId['SiretSiege'],0,3).' '. + substr($tabId['SiretSiege'],3,3).' '. + substr($tabId['SiretSiege'],6,3).' '. + substr($tabId['SiretSiege'],9,5).' '. + ' RCS : '.$tabId['numRC'].' '. + preg_replace('/^(TC |TI |TGI |TGIcc )/i','',$tabId['TribunalLib']), 80).EOL; + + /** Situation Juridique **/ + $dateRadiation=$tabId['dateRad']; + $situationjuridique=$tabId['SituationJuridique']; + $libSituation=''; + if (in_array(substr($situationjuridique,0,1), array('P', 'R')) ) + { + if(isset($dateRadiation) && $dateRadiation!='' && $dateRadiation!='0000-00-00'){ + $dateRad = $tdate->dateT('Ymd', 'd/m/Y', str_replace('-','',$dateRadiation)); + } + if ($situationjuridique=='P') + { + $libSituation.= 'En procédure collective'; + if($dateRad!=''){ $libSituation.= 'Radié du RCS le '.$dateRad; } + } + //Radiation + if($situationjuridique=='RR') + { + $libSituation.= 'Radié du RCS'; + if($dateRad!=''){ $libSituation.= ' le '.$dateRad; } + }elseif($situationjuridique=='RP'){ + $libSituation.= 'Radiation publiée'; + if($dateRad!=''){ $libSituation.= ' le '.$dateRad; } + } + } + elseif($tabId['EntActiveRCS']==1) { + $libSituation.= 'Actif au RCS'; + } + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('SITUA. JUR.: '.$libSituation, 80).EOL;//@todo multiligne + + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('FORME JUR. : '.$tabId['FJ'].' '.$tabId['FJ_lib'], 80).EOL;//@todo multiligne + + if ($tabId['Capital']>0) { + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('CAPITAL : '.number_format($tabId['Capital'],0,'.',' ').' '.$tabId['CapitalDev'], 80).EOL; + } + $rapport.=initstr('', 80).EOL; + $dateImm=str_replace('-','',$tabId['dateImmat']); + if (substr($dateImm,0,4)*1==0) $dateImm=$tabId['DateCreaEn']; + if (substr($dateImm,0,4)*1==0) $dateImm=$tabId['DateCreaEt']; + $rapport.=initstr('CREATION : '.$tdate->dateT('Ymd','M Y',$dateImm), 80).EOL; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('CODE NAF : '.$tabId['NafEnt'].' '.$tabId['NafEntLib'], 80).EOL;//@todo multiligne + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('ACTIVITE : ',80).EOL; + $rapport.=wordwrap($tabId['Activite'], 80, EOL).EOL;//@todo multiligne + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('ORIGINE DU FOND : '.$tabCreation['a'.$tabId['OrigineCreation']], 80).EOL;//@todo multiligne + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('TYPE D\'EXPLOITATION : '.$tabTypeExploitation[$tabId['TypeExploitation']*1], 80).EOL;//@todo multiligne + $rapport.=initstr('', 80).EOL; + + $nbEts=($tabId['NbEtab']*1)-1; + if ($nbEts<0) $nbEts=0; + $rapport.=initstr('NOMBRE D\'ETABLISSEMENTS SECONDAIRES : '.$nbEts, 80).EOL; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('DIRIGEANT 1: '.strtoupper($tabId['dir1Titre']), 80).EOL; + if (substr($tabId['dir1DateNaiss'],0,4)*1==0) $strNaiss=''; + else $strNaiss=' né(e) le '.$tdate->dateT('Y-m-d','d/m/Y',$tabId['dir1DateNaiss']); + $rapport.=initstr(' '.$tabId['dir1NomPrenom'].$strNaiss,80).EOL; + $rapport.=initstr('DIRIGEANT 2: '.strtoupper($tabId['dir2Titre']), 80).EOL; + if (substr($tabId['dir2DateNaiss'],0,4)*1==0) $strNaiss=''; + else $strNaiss=' né(e) le '.$tdate->dateT('Y-m-d','d/m/Y',$tabId['dir2DateNaiss']); + $rapport.=initstr(' '.$tabId['dir2NomPrenom'].$strNaiss,80).EOL; + $rapport.=initstr('', 80).EOL; + + $rapport.=initstr('GARANTIES',80).EOL; /**@todo MORE*/ + $tabBilans=$tabIndiscore['tabBilan']; + $devise=$tabBilans[0]['MONNAIE']; + //print_r($tabIndiscore);die(); + if (($tabIndiscore['NbBilansScore']*1)==0) { + $rapport.=initstr(' Néant',80).EOL; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('ELEMENTS FINANCIERS', 80).EOL; + $rapport.=initstr(' Néant',80).EOL; + } else { + $rapport.=initstr(' Elles sont représentées par la valeur brute au bilan',80).EOL; + $rapport.=initstr(' du fonds de commerce pour un montant de : '.sprintf("%27s", number_format($tabBilans[0]['AH'], 0, ',', ' '))." $devise",80).EOL; + $rapport.=initstr(' des constructions pour un montant de : '.sprintf("%27s", number_format($tabBilans[0]['AP'], 0, ',', ' '))." $devise",80).EOL; + $rapport.=initstr('', 80).EOL; + + $rapport.=initstr("ELEMENTS FINANCIERS (SOMMES EN $devise)", 80).EOL; + $rapport.=initstr(' '. $tdate->dateT('Ymd','d/m/Y',$tabBilans[0]['DATE_CLOTURE']) + .' '. $tdate->dateT('Ymd','d/m/Y',$tabBilans[1]['DATE_CLOTURE']) + .' '. $tdate->dateT('Ymd','d/m/Y',$tabBilans[2]['DATE_CLOTURE']), 80).EOL; + $rapport.=initstr(' '. $tabBilans[0]['DUREE_MOIS'].' mois' + .' '. $tabBilans[1]['DUREE_MOIS'].' mois' + .' '. $tabBilans[2]['DUREE_MOIS'].' mois', 80).EOL; + $rapport.=initstr('CA : '. sprintf("%14s", number_format($tabBilans[0]['FL'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['FL'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['FL'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('CA EXPORT : '. sprintf("%14s", number_format($tabBilans[0]['FK'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['FK'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['FK'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('RESULTAT COURANT : '. sprintf("%14s", number_format($tabBilans[0]['GW'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['GW'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['GW'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('RESULTAT NET : '. sprintf("%14s", number_format($tabBilans[0]['HN'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['HN'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['HN'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('FONDS PROPRES : '. sprintf("%14s", number_format($tabBilans[0]['DL'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['DL'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['DL'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('FRAIS FINANCIERS : '. sprintf("%14s", number_format($tabBilans[0]['GU'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['GU'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['GU'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('TOTAL DETTES : '. sprintf("%14s", number_format($tabBilans[0]['EC'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['EC'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['EC'], 0, ',', ' ')), 80).EOL; + $rapport.=initstr('EFFECTIFS : '. sprintf("%14s", number_format($tabBilans[0]['YP'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[1]['YP'], 0, ',', ' ')) + .' '. sprintf("%14s", number_format($tabBilans[2]['YP'], 0, ',', ' ')), 80).EOL; + } + + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('PARTENAIRES FINANCIERS', 80).EOL; + $mBanque = new Metier_Partenaires_MBanques($iDb); + $tabBanque = $mBanque->getListeBanques($siren); + if (count($tabBanque)==0) { + $rapport.=initstr(' Aucun partenaire n\'est référencé dans notre base.',80).EOL; + } else { + foreach ($tabBanque as $i=>$lien) { + $rapport.=initstr(' '.$lien['libBanque'], 80).EOL; + if ($i>=3) break; + } + } + + /** § ANNONCES **/ + $bodc=false; + $nbAnn=0; + $tabAnn=$iInsee->getAnnoncesLegales($siren); + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('ANNONCES LEGALES', 80).EOL; + if (count($tabAnn)>0) { + foreach ($tabAnn as $i=>$depot) { + $annDate=$tdate->dateT('Y-m-d','d/m/Y',$depot['DateParution']); + foreach ($depot['evenements'] as $even) { + $annEve=$even['CodeEven']; + if ($annEve>=3000 && $annEve<4000) { + if ($bodc) continue; + $bodc=true; + } + $annLib=$even['LibEven']; + $rapport.=initstr(" $annDate $annLib",80).EOL; + $annDate=' '; + } + $nbAnn++; + if ($nbAnn>=6) break; + } + } else + $rapport.=initstr(' Aucune annonce pour cette entreprise.',80).EOL; + + /** § dirigeance **/ + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('DIRIGEANCE', 80).EOL; + + /** § Liens **/ + $mLiens = new SdMetier_Liens_Base($siren, 'siren'); + $tabAct = $tabPar = array(); + try { + $tabAct = $mLiens->getActionnaires(); + } catch(Exception $e) {} + try { + $tabPart = $mLiens->getParticipations(); + } catch(Exception $e) {} + if (count($tabAct)==0 && count($tabPart)==0) + $rapport.=initstr(' A notre connaissance, l\'entreprise est indépendante.',80).EOL; + else { + foreach ($tabAct as $i=>$lien) { + $rapport.=initstr(' ACTIONNAIRE à '.$lien->PDetention.' % : '.$lien->RS.' ('.$lien->siren.')', 80).EOL; + if ($i>=3) break; + } + foreach ($tabPart as $i=>$lien) { + $rapport.=initstr(' FILIALE à '.$lien->PDetention.' % : '.$lien->RS.' ('.$lien->siren.')', 80).EOL; + if ($i>=3) break; + } + } + $rapport.=initstr('', 80).EOL; + + /** § commentaires **/ + $nbLiP=$nbLiM=0; + $startLi = false; + $startPaiement = 0; + foreach ($tabIndiscore['tabCommentaires'] as $i=>$txt) { + if ($i==5000) continue; + + if ($i==10001000 || $startPaiement==1) { + $rapport.= initstr('', 80).EOL; + $startPaiement++; + } else { + $startPaiement=0; + } + + if ($i==10000700 || $i==10000800) { + $rapport.= initstr('', 80).EOL; + $startLi = true; + } else { + $startLi = false; + } + + $ligneLi = false; + if (preg_match('/LI\+/i', $txt)) { $ligneLi=true; $nbLiP++; } + elseif (preg_match('/LI\-/i', $txt)) { $ligneLi=true; $nbLiM++; } + + if (!$startLi && !$ligneLi && $startPaiement==0) { + continue; + } + //Plus de 5 LI, on arrete + if ( ($nbLiP>5 && $ligneLiP) || ($nbLiM>5 && $ligneLiM) ) { + continue; + } + //echo "Ligne : $i => $txt\n"; + + /*$txt = strtr($txt, array( + ''=>'+', + ''=>'-', + ' '=>' ', + '€'=>'E', + '€'=>'E', + chr(160)=>' ', + ));*/ + //$txt = str_replace(array('','',' ','€','€',chr(160)), array('+','-',' ','E','E',' '), $txt); + $txt = str_replace(array('','','€'), array('+','-','E'), $txt); + //echo ".=> $txt\n"; + $txt = html_entity_decode($txt, ENT_QUOTES, 'UTF-8'); + //echo ".=> $txt\n"; + $txt = wordwrap(strip_tags($txt),80,EOL).EOL; + //echo ".=> $txt\n"; + $rapport.= $txt; + } + + /** § scoring **/ + if ($tabIndiscore['Indiscore20']==0) $strTendance=''; + else $strTendance=' (Tendance '.$tabIndiscore['TendanceIndiscore'].')'; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('COTATION INDISCORE : '.$tabIndiscore['Indiscore20'].'/20 '.$strTendance, 80).EOL; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('LIMITE DE CREDIT : '.(round($tabIndiscore['encours']/1000)*1000).' EUR', 80).EOL; + + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('', 80).EOL; + $rapport.=initstr('', 80).EOL; + + $rapport = utf8_decode($rapport); + + } //Fin rapport + + // --- Ecriture ligne dans le fichier + file_put_contents($pathClientRecv.'/'.$fichierOut, $entete.EOL.$rapport, FILE_APPEND); + + // --- Insertion log de facturation + if ($opts->ftp!==null || $opts->file!==null) { + $logsM = new Application_Model_Sdv1Logs(); + try { + $logsM->insert(array( + 'login' => 'fransbonrapports', + 'page' => 'indiscore3', + 'siren' => $siren, + 'nic' => substr($siretOut,9,5), + 'params' => '', 'dateHeure' => date('YmdHis') - )); - } catch (Zend_Db_Exception $e) { - echo date('Y/m/d H:i:s') ."Impossible d'enregistrer le log $siren :".$e->getMessage()."\n"; - } - } - } // Fin de lecture des lignes du fichier - - //Surcharge du nom du fichier pour les traitements manuel - if ( $opts->file ) { - $newname = preg_replace('/[0-9]{8}/', date('Ymd'), basename($fichierOut, '.out')); - if ( rename($pathClientRecv.'/'.$fichierOut, $pathClientRecv.'/'.$newname.'.out') === true ) { - $fichierOut = $newname.'.out'; - } - } - - //Ecriture dans la table des prestations - $fluxoutM = new Application_Model_Sdv1FluxFileOut(); - $dateEnd = date('YmdHis'); - $fluxoutM->insert(array( - 'client' => 'fransbonhomme', - 'name' => 'RAPPORT', - 'nbLines' => $nbLines, - 'dateBegin' => $dateBegin, - 'dateEnd' => $dateEnd, - 'fileOut' => $fichierOut, - 'depotType' => 'FTP', - 'depotDate' => '0000-00-00 00:00:00', - )); - if ($opts->ftp) { - // -- Ecriture date d'exectution - $fluxinM->update(array('dateExecute' => $dateEnd), 'id='.$p->id); - } - } -} // Fin de lecture des fichiers de demande -else { - echo date('Y/m/d H:i:s') . "Aucun fichier à traiter !\n"; -} - -echo date('Y/m/d H:i:s')." - Fin du traitement !\n" -?> \ No newline at end of file + )); + } catch (Zend_Db_Exception $e) { + echo date('Y/m/d H:i:s') ."Impossible d'enregistrer le log $siren :".$e->getMessage()."\n"; + } + } + } // Fin de lecture des lignes du fichier + + //Surcharge du nom du fichier pour les traitements manuel + if ( $opts->file ) { + $newname = preg_replace('/[0-9]{8}/', date('Ymd'), basename($fichierOut, '.out')); + if ( rename($pathClientRecv.'/'.$fichierOut, $pathClientRecv.'/'.$newname.'.out') === true ) { + $fichierOut = $newname.'.out'; + } + } + + //Ecriture dans la table des prestations + $fluxoutM = new Application_Model_Sdv1FluxFileOut(); + $dateEnd = date('YmdHis'); + $fluxoutM->insert(array( + 'client' => 'fransbonhomme', + 'name' => 'RAPPORT', + 'nbLines' => $nbLines, + 'dateBegin' => $dateBegin, + 'dateEnd' => $dateEnd, + 'fileOut' => $fichierOut, + 'depotType' => 'FTP', + 'depotDate' => '0000-00-00 00:00:00', + )); + if ($opts->ftp) { + // -- Ecriture date d'exectution + $fluxinM->update(array('dateExecute' => $dateEnd), 'id='.$p->id); + } + } +} // Fin de lecture des fichiers de demande +else { + echo date('Y/m/d H:i:s') . "Aucun fichier à traiter !\n"; +} + +echo date('Y/m/d H:i:s')." - Fin du traitement !\n"; diff --git a/scripts/clients/RrgSurv.php b/bin/clientRrgSurv.php similarity index 98% rename from scripts/clients/RrgSurv.php rename to bin/clientRrgSurv.php index 98c6a707..169dd985 100644 --- a/scripts/clients/RrgSurv.php +++ b/bin/clientRrgSurv.php @@ -4,14 +4,14 @@ error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED); // --- Define path to application directory defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../../application')); + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); // --- Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // --- Composer autoload -require_once realpath(__DIR__ . '/../../vendor/autoload.php'); +require_once realpath(__DIR__ . '/../vendor/autoload.php'); // Create application, bootstrap, and run $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); diff --git a/scripts/clients/SfrIndicateur.php b/bin/clientSfrIndicateur.php similarity index 99% rename from scripts/clients/SfrIndicateur.php rename to bin/clientSfrIndicateur.php index 1e077a46..dbb52f93 100644 --- a/scripts/clients/SfrIndicateur.php +++ b/bin/clientSfrIndicateur.php @@ -8,14 +8,14 @@ error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED); // --- Define path to application directory defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../../application')); + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); // --- Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // --- Composer autoload -require_once realpath(__DIR__ . '/../../vendor/autoload.php'); +require_once realpath(__DIR__ . '/../vendor/autoload.php'); // Create application, bootstrap, and run $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); @@ -1002,4 +1002,3 @@ function execDbInternal($values, $debug = false) return $values; } - diff --git a/scripts/clients/SfrSurv.php b/bin/clientSfrSurv.php similarity index 97% rename from scripts/clients/SfrSurv.php rename to bin/clientSfrSurv.php index 01b1fa9d..2d353d74 100644 --- a/scripts/clients/SfrSurv.php +++ b/bin/clientSfrSurv.php @@ -7,14 +7,14 @@ error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING); // --- Define path to application directory defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../../application')); + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); // --- Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // --- Composer autoload -require_once realpath(__DIR__ . '/../../vendor/autoload.php'); +require_once realpath(__DIR__ . '/../vendor/autoload.php'); // Create application, bootstrap, and run $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); @@ -134,5 +134,3 @@ if ( $opts->in ) { echo date('Y-m-d H:i:s')." - Erreur confirmation des SIREN." . PHP_EOL; } } - - diff --git a/scripts/majBilansPostes.php b/bin/dataBilanPostes.php similarity index 100% rename from scripts/majBilansPostes.php rename to bin/dataBilanPostes.php diff --git a/scripts/calculScoreSurv.php b/bin/dataScoreSurv.php similarity index 97% rename from scripts/calculScoreSurv.php rename to bin/dataScoreSurv.php index c39fc631..7ca0e1c7 100644 --- a/scripts/calculScoreSurv.php +++ b/bin/dataScoreSurv.php @@ -1,317 +1,317 @@ -> /home/scores/batch/shared/sources/log/calculScoreSurv.log - * 0 8 * * 0,6 /home/scores/batch/scripts/calculScoreSurv.php >> /home/scores/batch/shared/sources/log/calculScoreSurv.log - * - * TODO - * - Option lecture sur bdd slave et ecriture sur bdd master - * - Modifier les requetes sur les sources pour - * Sélectionner suivant des règles toutes les x heures les nouveaux éléments sur x heures + 1 - * Si déjà calculé du jour, alors on passe sinon on calcul - * - Vérifier les éléments déjà calculés si il n'y a pas de changement - * - * - */ - -error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED); - -// --- Define path to application directory -defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); - -// --- Define application environment -defined('APPLICATION_ENV') - || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); - -// --- Composer autoload -require_once realpath(__DIR__ . '/../vendor/autoload.php'); - -// --- Create application, bootstrap, and run -$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); - -//Options -try { - $opts = new Zend_Console_Getopt(array( - 'help|?' => "Displays usage information.", - 'tout|t' => "Calculer tous les scores", - 'verbose|v' => "Mode bavard ou debug", - 'ancien|a' => "Recalculer tous les scores avec indiscore>0 et un encours à 0 !", - 'list|l' => "Lister les déclencheurs existants pour le recalcul des scores", - 'declencheur|d=s' => "Lancer le calcul des scores pour le déclencheur XXX", - 'max=s' => "Nombre max d'unités à calculer pour un déclencheur", - 'nostop' => "Ne pas stopper", - 'dbread' => "choix de la database pour la lecture des informations (master, slave)", - )); - $opts->parse(); -} catch (Zend_Console_Getopt_Exception $e) { - echo $e->getUsageMessage(); - exit; -} - -//Usage -if( isset($opts->help) || count($opts->getOptions())==0 ) -{ - echo "Scorer toute la base entreprise S&D.\n"; - echo $opts->getUsageMessage(); - exit; -} - -$strSelect="s.siren, s.actif, s.procol, s.indiScore, s.indiScore20, s.encours, s.indiScoreDate, scoreSolv, scoreConf, scoreDir, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, s.dateUpdate, s.cs, s.csMoisMaj, s.csMoisFin"; - -$tableSurvTmp = 'tmp.scores_surveillance'; - -$tabQueries = array( - /* Bilans Asso déposé(s) */ - 'bilansasso' => "SELECT $strSelect, 'bilansasso' as source FROM ".$tableSurvTmp."_bilansasso s, jo.asso_bilans b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate GROUP BY siren", - //asso_bilans', 'dateCloture, dateCloture*1 as dateClotureNum', "siren=$siren ORDER BY DESC LIMIT 0,5", true, MYSQL_ASSOC); - /* Privileges Infogreffe */ - 'privileges' => "SELECT $strSelect, 'privileges' AS source FROM ".$tableSurvTmp."_privileges s, jo.greffes_privileges p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>s.dateUpdate OR p.dateUpdate>s.dateUpdate) GROUP BY siren", - /* Privileges Facto */ - 'privileges2' => "SELECT $strSelect, 'privileges2' AS source FROM ".$tableSurvTmp."_privileges2 s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs='P' GROUP BY siren", - /* IMPAYES Facto */ - /*'impayes' => "SELECT $strSelect, 'impayes' AS source FROM ".$tableSurvTmp."_impayes s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs='I' GROUP BY siren",*/ - /* Ajout d'un nouveau score */ - 'ajout' => "SELECT $strSelect, 'ajout' AS source FROM ".$tableSurvTmp."_ajout s WHERE s.siren>1000 AND ((DATEDIFF(NOW(),s.indiScoreDate) IS NULL AND s.dateUpdate "SELECT $strSelect, 'jour' AS source FROM ".$tableSurvTmp."_jour s, sdv1.`logs` l WHERE l.siren>1000 AND s.siren=l.siren AND l.page='indiscore' AND l.dateHeure>s.dateUpdate AND s.procol NOT IN('P') GROUP BY siren", - /* Dirigeants */ - 'dirigeants' => "SELECT $strSelect, 'dirigeants' AS source FROM ".$tableSurvTmp."_dirigeants s, jo.rncs_dirigeants d WHERE d.siren>1000 AND s.siren = d.siren AND (d.dateInsert>s.dateUpdate OR d.dateUpdate>s.dateUpdate) AND (d.dateInsert>'2013-03-15 00:00:00' OR d.dateUpdate>'2013-03-15 00:00:00') GROUP BY siren", - /* Evenements INSEE */ - 'insee' => "SELECT $strSelect, 'insee' as source FROM ".$tableSurvTmp."_insee s, insee.insee_even i WHERE i.insSIREN>1000 AND s.siren=i.insSIREN AND i.dateInsert>s.dateUpdate AND i.insSIEGE=1 GROUP BY siren", - /* Entreprises RNCS */ - //'rncs' => "SELECT $strSelect, 'rncs' as source FROM scores_surveillance_tmp s, rncs_entrep r WHERE s.siren>1000 AND s.siren=r.siren AND (r.dateInsert>s.dateUpdate OR r.dateUpdate>s.dateUpdate) /*AND (d.dateInsert>'2013-03-15 00:00:00' OR d.dateUpdate>'2013-03-15 00:00:00')*/ AND s.procol NOT IN('P') GROUP BY siren", - /* Bodacc */ - 'bodacc' => "SELECT $strSelect, 'bodacc' as source FROM ".$tableSurvTmp."_bodacc s, jo.bodacc_detail b WHERE b.siren>1000 AND s.siren=b.siren AND( b.dateInsert>s.dateUpdate OR b.dateUpdate>s.dateUpdate) AND b.Rubrique NOT IN('creations','comptes') GROUP BY siren", - /* Collecte */ - 'collecte' => "SELECT $strSelect, 'collecte' as source FROM ".$tableSurvTmp."_collecte s, jo.annonces b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate GROUP BY siren", - /* Bilans en base */ - 'bilans1' => "SELECT $strSelect, 'bilans1' as source FROM ".$tableSurvTmp."_bilans1 s, jo.bilans b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate AND (DATEDIFF(b.dateExercice,s.dateBilan)>1 OR DATEDIFF(b.dateExercice,s.dateBilan) IS NULL) GROUP BY siren", - /* Défaut divers Facto (D:Défaut, 24:Groupe en diff, 31:Cessation Annoncée, 50:Terrorisme)*/ - 'defaut' => "SELECT $strSelect, 'defaut' AS source FROM ".$tableSurvTmp."_defaut s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs IN ('D','24','31','50') GROUP BY siren", - /* RAS Facto */ - 'regulier' => "SELECT $strSelect, 'regulier' AS source FROM ".$tableSurvTmp."_regulier s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs='00' AND s.procol NOT IN('P') GROUP BY siren", - // Rajouter AND (DATEDIFF(NOW(),s.indiScoreDate)>365 - // et vérifier si ça en enlève en recalcul régulier - /* Scores trop anciens */ - 'ancien' => "SELECT $strSelect, 'ancien' AS source FROM ".$tableSurvTmp."_ancien s WHERE s.siren>1000 AND (DATEDIFF(NOW(),s.indiScoreDate)>365) AND s.procol NOT IN('P') AND s.dateUpdate"SELECT s.siren, s.actif, s.procol, s.indiScore, s.indiScore20, s.encours, s.indiScoreDate, scoreSolv, scoreConf, scoreDir, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, 'bilans2' as source, s.dateUpdate FROM scores_surveillance_tmp s, bilans_deposes b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate AND s.procol NOT IN('P') GROUP BY siren", -); - -$tabQueriesOrder = array( - 'siren' => " ORDER BY siren ASC LIMIT 5000", - 'old' => " ORDER BY s.dateUpdate ASC LIMIT 5000", -); -$queryOrder = 'old'; - -/** - * Liste des déclencheurs - */ -if ( $opts->list ) { - foreach ( $tabQueries as $key => $query) { - echo "\t- $key\n"; - } - exit; -} - -$c = new Zend_Config($application->getOptions()); -$db = Zend_Db::factory($c->profil->db->metier); -Zend_Db_Table_Abstract::setDefaultAdapter($db); - -/** - * Delete all temporary table - */ -$day = date('N'); -if ( $opts->tout && $day == 6) { - foreach ( $tabQueries as $key => $query) { - try { - $db->query("DROP TABLE IF EXISTS $key;"); - } catch(Zend_Db_Adapter_Exception $e) { - echo $e->getMessage() . "\n"; - } - } -} - - -/** - * Force declencheur - */ -if ( $opts->declencheur ) { - if ( in_array($opts->declencheur, array_keys($tabQueries)) ) { - $tabQueries = array($opts->declencheur => $tabQueries[$opts->declencheur]); - } else { - exit; - } -} - -require_once APPLICATION_PATH.'/configs/config.php'; - -require_once 'framework/fwk.php'; -require_once 'framework/common/chiffres.php'; -require_once 'framework/common/dates.php'; -require_once 'framework/mail/sendMail.php'; - -require_once 'Metier/Scores/MScores.php'; - -$tDeb=microtime(true); - -$dateJour=date('Y-m-d'); - -function wsLog($service, $siret='', $ref='') {} - -$message = $error = ''; -echo date('Y/m/d H:i:s') ." - DEBUT du programme de calcul des scores en surveillance...\n"; - -/** - * Mise en surveillance de l'ensemble des scores - */ -if ( $opts->tout ) { - echo date('Y/m/d H:i:s') ." - Mise en surveillance Scores de l'ensemble des demandes de scoring...\n"; - - $query = "INSERT IGNORE INTO jo.scores_surveillance(siren) SELECT DISTINCT siren FROM jo.surveillances_site - WHERE source='score' AND siren>=100000 AND siren NOT IN (SELECT siren FROM jo.scores_surveillance) "; - - $db->query($query); -} - -/** - * Lancement du programme - */ -echo date('Y/m/d H:i:s') ." - Recherche des scores susceptibles d'avoir changés par déclencheur...\n"; - -$nbScoresSans=$nbScoresModif=$nbScoresNouv=$nbScoresProcol=$iRow=$nbRowsTot=0; - -$iInsee = new Metier_Insee_MInsee(); -foreach ($tabQueries as $declencheur => $query) -{ - $tableName = $tableSurvTmp . '_' . $declencheur; - echo date('Y/m/d H:i:s') ." - Copie de la table ".$tableName."\n"; - - try { - $db->query("CREATE TABLE $tableName ENGINE = MEMORY SELECT * FROM jo.scores_surveillance;"); - } catch(Zend_Db_Exception $e) { - echo $e->getMessage() . PHP_EOL; - //If the table exist an other scripts is running - $error.= "Impossible de lancer le calcul des scores $declencheur, vérifier qu'il y a bien eu un calcul récemment!\n"; - continue; - } - - echo date('Y/m/d H:i:s') ." - Recherche par la source '$declencheur'...\n"; - - try { - $res = $db->fetchAll($query . $tabQueriesOrder[$queryOrder]); - } catch(Zend_Db_Exception $e) { - echo $e->getMessage() . "\n"; - exit; - } - - $nbRows=count($res); - echo date('Y/m/d H:i:s') ." - Il y a $nbRows scores à recalculer par '$declencheur'...\n"; - - $tabNbRows[$declencheur] = $nbRows; - $nbRowsTot+=$nbRows; - $tabNbScoresModif[$declencheur] = 0; - - if ( $nbRows > 0 ) { - foreach ( $res as $entrep ) { - $iRow++; - - //Traitement - $siren = $entrep['siren']; - if ( !$iInsee->valideSiren($siren) ) continue; - $nic=0; - - $indiScorePre = $entrep['indiScore']*1; - $encoursPre = $entrep['encours']*1; - $dateScore = str_replace('-','',$entrep['indiScoreDate'])*1; - $sourceModif = $entrep['source']; - $procol = $entrep['procol']; - $nbModifs = ($entrep['nbModifs']*1)+1; - - //echo date('Y/m/d - H:i:s') ." - Siren $siren : AVANT SCORE".PHP_EOL; - $tabScore = calculIndiScore($siren, $nic, false, 0, false, 'scores', $declencheur); - //echo date('Y/m/d - H:i:s') ." - Siren $siren : APRES SCORE".PHP_EOL; - - $indiScore = $tabScore['Indiscore']*1; - $naf = $tabScore['NafEnt']; - $encours = round($tabScore['encours']); - - if ( $indiScore == $indiScorePre && $encours == $encoursPre && $dateScore!=0 ) { - $nbScoresSans++; - echo date('Y/m/d H:i:s') ." - $iRow/$nbRowsTot - Siren $siren : $indiScore / 100 ($encours EUR) inchangé depuis $dateScore (Source=$sourceModif).\n"; - } else { - if ($dateScore==0) { - $nbScoresNouv++; - } else { - $nbScoresModif++; - $tabNbScoresModif[$declencheur]++; - } - echo date('Y/m/d H:i:s') ." - $iRow/$nbRowsTot - Siren $siren : $indiScorePre=>$indiScore | $encoursPre=>$encours (Source=$sourceModif) !\n"; - } - - //Arrêt de l'execution à 19h00 - if ( date('Hi')*1>=1900 && !$opts->nostop) break; - - // Arret sur indicateur maximum - if ( $opts->max && $iRow >= $opts->max) break; - } - } - - //Delete the remporary table - try { - $db->query("DROP TABLE IF EXISTS $tableName;"); - } catch(Zend_Db_Adapter_Exception $e) { - echo $e->getMessage() . "\n"; - } - -} - -/** - * Rapport - */ -$duree = round(microtime(true) - $tDeb); -$nbCalc = $nbScoresSans + $nbScoresProcol + $nbScoresNouv + $nbScoresModif; - -$subject = "[CHARGEMENT] Calculs IndiScores"; -if ($opts->declencheur) { - $subject.= " - Source ".$opts->declencheur; - $message = "Calcul par la source ".$opts->declencheur."\n"; -} -if ($opts->tout) { - $subject.= " - Toutes sources"; - $message = "Calcul pour toutes les sources\n"; -} -$message.= "($nbCalc/$nbRowsTot en $duree s)\n"; -$message.= $error; -$message.= "\n"; -$message.= "Nombre de scores inchangés .................. $nbScoresSans / $nbRowsTot.\n"; -$message.= "Nombre de scores inchangés car procol ....... $nbScoresProcol / $nbRowsTot.\n"; -$message.= "Nombre de scores ajoutés .................... $nbScoresNouv / $nbRowsTot.\n"; -$message.= "Nombre de scores modifiées .................. $nbScoresModif / $nbRowsTot.\n"; -$message.= "\n"; - -foreach($tabNbRows as $declencheur => $nbTot) { - $nbModifs = $tabNbScoresModif[$declencheur]*1; - $message.= "Nombre de modifs par '$declencheur'\t...... $nbModifs / $nbTot.\n"; -} - -// Envoi Mail -$mail = new Scores_Mail_Method($c->profil->mail); -$mail->setBodyTextC($message); -$mail->setFrom('supportdev@scores-decisions.com', 'Machine'); -$mail->addTo('suivi@scores-decisions.com', 'Suivi'); -$mail->setSubjectC($subject); -$mail->execute(); - -echo date('Y/m/d H:i:s') ." - Fin du traitement.".PHP_EOL; \ No newline at end of file +> /home/scores/batch/shared/sources/log/calculScoreSurv.log + * 0 8 * * 0,6 /home/scores/batch/scripts/calculScoreSurv.php >> /home/scores/batch/shared/sources/log/calculScoreSurv.log + * + * TODO + * - Option lecture sur bdd slave et ecriture sur bdd master + * - Modifier les requetes sur les sources pour + * Sélectionner suivant des règles toutes les x heures les nouveaux éléments sur x heures + 1 + * Si déjà calculé du jour, alors on passe sinon on calcul + * - Vérifier les éléments déjà calculés si il n'y a pas de changement + * + * + */ + +error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED); + +// --- Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); + +// --- Define application environment +defined('APPLICATION_ENV') + || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); + +// --- Composer autoload +require_once realpath(__DIR__ . '/../vendor/autoload.php'); + +// --- Create application, bootstrap, and run +$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); + +//Options +try { + $opts = new Zend_Console_Getopt(array( + 'help|?' => "Displays usage information.", + 'tout|t' => "Calculer tous les scores", + 'verbose|v' => "Mode bavard ou debug", + 'ancien|a' => "Recalculer tous les scores avec indiscore>0 et un encours à 0 !", + 'list|l' => "Lister les déclencheurs existants pour le recalcul des scores", + 'declencheur|d=s' => "Lancer le calcul des scores pour le déclencheur XXX", + 'max=s' => "Nombre max d'unités à calculer pour un déclencheur", + 'nostop' => "Ne pas stopper", + 'dbread' => "choix de la database pour la lecture des informations (master, slave)", + )); + $opts->parse(); +} catch (Zend_Console_Getopt_Exception $e) { + echo $e->getUsageMessage(); + exit; +} + +//Usage +if( isset($opts->help) || count($opts->getOptions())==0 ) +{ + echo "Scorer toute la base entreprise S&D.\n"; + echo $opts->getUsageMessage(); + exit; +} + +$strSelect="s.siren, s.actif, s.procol, s.indiScore, s.indiScore20, s.encours, s.indiScoreDate, scoreSolv, scoreConf, scoreDir, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, s.dateUpdate, s.cs, s.csMoisMaj, s.csMoisFin"; + +$tableSurvTmp = 'tmp.scores_surveillance'; + +$tabQueries = array( + /* Bilans Asso déposé(s) */ + 'bilansasso' => "SELECT $strSelect, 'bilansasso' as source FROM ".$tableSurvTmp."_bilansasso s, jo.asso_bilans b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate GROUP BY siren", + //asso_bilans', 'dateCloture, dateCloture*1 as dateClotureNum', "siren=$siren ORDER BY DESC LIMIT 0,5", true, MYSQL_ASSOC); + /* Privileges Infogreffe */ + 'privileges' => "SELECT $strSelect, 'privileges' AS source FROM ".$tableSurvTmp."_privileges s, jo.greffes_privileges p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>s.dateUpdate OR p.dateUpdate>s.dateUpdate) GROUP BY siren", + /* Privileges Facto */ + 'privileges2' => "SELECT $strSelect, 'privileges2' AS source FROM ".$tableSurvTmp."_privileges2 s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs='P' GROUP BY siren", + /* IMPAYES Facto */ + /*'impayes' => "SELECT $strSelect, 'impayes' AS source FROM ".$tableSurvTmp."_impayes s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs='I' GROUP BY siren",*/ + /* Ajout d'un nouveau score */ + 'ajout' => "SELECT $strSelect, 'ajout' AS source FROM ".$tableSurvTmp."_ajout s WHERE s.siren>1000 AND ((DATEDIFF(NOW(),s.indiScoreDate) IS NULL AND s.dateUpdate "SELECT $strSelect, 'jour' AS source FROM ".$tableSurvTmp."_jour s, sdv1.`logs` l WHERE l.siren>1000 AND s.siren=l.siren AND l.page='indiscore' AND l.dateHeure>s.dateUpdate AND s.procol NOT IN('P') GROUP BY siren", + /* Dirigeants */ + 'dirigeants' => "SELECT $strSelect, 'dirigeants' AS source FROM ".$tableSurvTmp."_dirigeants s, jo.rncs_dirigeants d WHERE d.siren>1000 AND s.siren = d.siren AND (d.dateInsert>s.dateUpdate OR d.dateUpdate>s.dateUpdate) AND (d.dateInsert>'2013-03-15 00:00:00' OR d.dateUpdate>'2013-03-15 00:00:00') GROUP BY siren", + /* Evenements INSEE */ + 'insee' => "SELECT $strSelect, 'insee' as source FROM ".$tableSurvTmp."_insee s, insee.insee_even i WHERE i.insSIREN>1000 AND s.siren=i.insSIREN AND i.dateInsert>s.dateUpdate AND i.insSIEGE=1 GROUP BY siren", + /* Entreprises RNCS */ + //'rncs' => "SELECT $strSelect, 'rncs' as source FROM scores_surveillance_tmp s, rncs_entrep r WHERE s.siren>1000 AND s.siren=r.siren AND (r.dateInsert>s.dateUpdate OR r.dateUpdate>s.dateUpdate) /*AND (d.dateInsert>'2013-03-15 00:00:00' OR d.dateUpdate>'2013-03-15 00:00:00')*/ AND s.procol NOT IN('P') GROUP BY siren", + /* Bodacc */ + 'bodacc' => "SELECT $strSelect, 'bodacc' as source FROM ".$tableSurvTmp."_bodacc s, jo.bodacc_detail b WHERE b.siren>1000 AND s.siren=b.siren AND( b.dateInsert>s.dateUpdate OR b.dateUpdate>s.dateUpdate) AND b.Rubrique NOT IN('creations','comptes') GROUP BY siren", + /* Collecte */ + 'collecte' => "SELECT $strSelect, 'collecte' as source FROM ".$tableSurvTmp."_collecte s, jo.annonces b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate GROUP BY siren", + /* Bilans en base */ + 'bilans1' => "SELECT $strSelect, 'bilans1' as source FROM ".$tableSurvTmp."_bilans1 s, jo.bilans b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate AND (DATEDIFF(b.dateExercice,s.dateBilan)>1 OR DATEDIFF(b.dateExercice,s.dateBilan) IS NULL) GROUP BY siren", + /* Défaut divers Facto (D:Défaut, 24:Groupe en diff, 31:Cessation Annoncée, 50:Terrorisme)*/ + 'defaut' => "SELECT $strSelect, 'defaut' AS source FROM ".$tableSurvTmp."_defaut s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs IN ('D','24','31','50') GROUP BY siren", + /* RAS Facto */ + 'regulier' => "SELECT $strSelect, 'regulier' AS source FROM ".$tableSurvTmp."_regulier s, sdv1.ge_cs2 p WHERE p.siren>1000 AND s.siren = p.siren AND (p.dateInsert>=s.dateUpdate OR p.dateConf>=s.dateUpdate) AND p.cs='00' AND s.procol NOT IN('P') GROUP BY siren", + // Rajouter AND (DATEDIFF(NOW(),s.indiScoreDate)>365 + // et vérifier si ça en enlève en recalcul régulier + /* Scores trop anciens */ + 'ancien' => "SELECT $strSelect, 'ancien' AS source FROM ".$tableSurvTmp."_ancien s WHERE s.siren>1000 AND (DATEDIFF(NOW(),s.indiScoreDate)>365) AND s.procol NOT IN('P') AND s.dateUpdate"SELECT s.siren, s.actif, s.procol, s.indiScore, s.indiScore20, s.encours, s.indiScoreDate, scoreSolv, scoreConf, scoreDir, scoreZ, scoreCH, scoreAfdcc1, scoreAfdcc2, scoreAfdcc2note, scoreAltman, scoreAltmanCote, scoreCCF, situFi, infoNote, noteStruct, noteFin, tendance, nbModifs, 'bilans2' as source, s.dateUpdate FROM scores_surveillance_tmp s, bilans_deposes b WHERE b.siren>1000 AND s.siren=b.siren AND b.dateInsert>s.dateUpdate AND s.procol NOT IN('P') GROUP BY siren", +); + +$tabQueriesOrder = array( + 'siren' => " ORDER BY siren ASC LIMIT 5000", + 'old' => " ORDER BY s.dateUpdate ASC LIMIT 5000", +); +$queryOrder = 'old'; + +/** + * Liste des déclencheurs + */ +if ( $opts->list ) { + foreach ( $tabQueries as $key => $query) { + echo "\t- $key\n"; + } + exit; +} + +$c = new Zend_Config($application->getOptions()); +$db = Zend_Db::factory($c->profil->db->metier); +Zend_Db_Table_Abstract::setDefaultAdapter($db); + +/** + * Delete all temporary table + */ +$day = date('N'); +if ( $opts->tout && $day == 6) { + foreach ( $tabQueries as $key => $query) { + try { + $db->query("DROP TABLE IF EXISTS $key;"); + } catch(Zend_Db_Adapter_Exception $e) { + echo $e->getMessage() . "\n"; + } + } +} + + +/** + * Force declencheur + */ +if ( $opts->declencheur ) { + if ( in_array($opts->declencheur, array_keys($tabQueries)) ) { + $tabQueries = array($opts->declencheur => $tabQueries[$opts->declencheur]); + } else { + exit; + } +} + +require_once APPLICATION_PATH.'/configs/config.php'; + +require_once 'framework/fwk.php'; +require_once 'framework/common/chiffres.php'; +require_once 'framework/common/dates.php'; +require_once 'framework/mail/sendMail.php'; + +require_once 'Metier/Scores/MScores.php'; + +$tDeb=microtime(true); + +$dateJour=date('Y-m-d'); + +function wsLog($service, $siret='', $ref='') {} + +$message = $error = ''; +echo date('Y/m/d H:i:s') ." - DEBUT du programme de calcul des scores en surveillance...\n"; + +/** + * Mise en surveillance de l'ensemble des scores + */ +if ( $opts->tout ) { + echo date('Y/m/d H:i:s') ." - Mise en surveillance Scores de l'ensemble des demandes de scoring...\n"; + + $query = "INSERT IGNORE INTO jo.scores_surveillance(siren) SELECT DISTINCT siren FROM jo.surveillances_site + WHERE source='score' AND siren>=100000 AND siren NOT IN (SELECT siren FROM jo.scores_surveillance) "; + + $db->query($query); +} + +/** + * Lancement du programme + */ +echo date('Y/m/d H:i:s') ." - Recherche des scores susceptibles d'avoir changés par déclencheur...\n"; + +$nbScoresSans=$nbScoresModif=$nbScoresNouv=$nbScoresProcol=$iRow=$nbRowsTot=0; + +$iInsee = new Metier_Insee_MInsee(); +foreach ($tabQueries as $declencheur => $query) +{ + $tableName = $tableSurvTmp . '_' . $declencheur; + echo date('Y/m/d H:i:s') ." - Copie de la table ".$tableName."\n"; + + try { + $db->query("CREATE TABLE $tableName ENGINE = MEMORY SELECT * FROM jo.scores_surveillance;"); + } catch(Zend_Db_Exception $e) { + echo $e->getMessage() . PHP_EOL; + //If the table exist an other scripts is running + $error.= "Impossible de lancer le calcul des scores $declencheur, vérifier qu'il y a bien eu un calcul récemment!\n"; + continue; + } + + echo date('Y/m/d H:i:s') ." - Recherche par la source '$declencheur'...\n"; + + try { + $res = $db->fetchAll($query . $tabQueriesOrder[$queryOrder]); + } catch(Zend_Db_Exception $e) { + echo $e->getMessage() . "\n"; + exit; + } + + $nbRows=count($res); + echo date('Y/m/d H:i:s') ." - Il y a $nbRows scores à recalculer par '$declencheur'...\n"; + + $tabNbRows[$declencheur] = $nbRows; + $nbRowsTot+=$nbRows; + $tabNbScoresModif[$declencheur] = 0; + + if ( $nbRows > 0 ) { + foreach ( $res as $entrep ) { + $iRow++; + + //Traitement + $siren = $entrep['siren']; + if ( !$iInsee->valideSiren($siren) ) continue; + $nic=0; + + $indiScorePre = $entrep['indiScore']*1; + $encoursPre = $entrep['encours']*1; + $dateScore = str_replace('-','',$entrep['indiScoreDate'])*1; + $sourceModif = $entrep['source']; + $procol = $entrep['procol']; + $nbModifs = ($entrep['nbModifs']*1)+1; + + //echo date('Y/m/d - H:i:s') ." - Siren $siren : AVANT SCORE".PHP_EOL; + $tabScore = calculIndiScore($siren, $nic, false, 0, false, 'scores', $declencheur); + //echo date('Y/m/d - H:i:s') ." - Siren $siren : APRES SCORE".PHP_EOL; + + $indiScore = $tabScore['Indiscore']*1; + $naf = $tabScore['NafEnt']; + $encours = round($tabScore['encours']); + + if ( $indiScore == $indiScorePre && $encours == $encoursPre && $dateScore!=0 ) { + $nbScoresSans++; + echo date('Y/m/d H:i:s') ." - $iRow/$nbRowsTot - Siren $siren : $indiScore / 100 ($encours EUR) inchangé depuis $dateScore (Source=$sourceModif).\n"; + } else { + if ($dateScore==0) { + $nbScoresNouv++; + } else { + $nbScoresModif++; + $tabNbScoresModif[$declencheur]++; + } + echo date('Y/m/d H:i:s') ." - $iRow/$nbRowsTot - Siren $siren : $indiScorePre=>$indiScore | $encoursPre=>$encours (Source=$sourceModif) !\n"; + } + + //Arrêt de l'execution à 19h00 + if ( date('Hi')*1>=1900 && !$opts->nostop) break; + + // Arret sur indicateur maximum + if ( $opts->max && $iRow >= $opts->max) break; + } + } + + //Delete the remporary table + try { + $db->query("DROP TABLE IF EXISTS $tableName;"); + } catch(Zend_Db_Adapter_Exception $e) { + echo $e->getMessage() . "\n"; + } + +} + +/** + * Rapport + */ +$duree = round(microtime(true) - $tDeb); +$nbCalc = $nbScoresSans + $nbScoresProcol + $nbScoresNouv + $nbScoresModif; + +$subject = "[CHARGEMENT] Calculs IndiScores"; +if ($opts->declencheur) { + $subject.= " - Source ".$opts->declencheur; + $message = "Calcul par la source ".$opts->declencheur."\n"; +} +if ($opts->tout) { + $subject.= " - Toutes sources"; + $message = "Calcul pour toutes les sources\n"; +} +$message.= "($nbCalc/$nbRowsTot en $duree s)\n"; +$message.= $error; +$message.= "\n"; +$message.= "Nombre de scores inchangés .................. $nbScoresSans / $nbRowsTot.\n"; +$message.= "Nombre de scores inchangés car procol ....... $nbScoresProcol / $nbRowsTot.\n"; +$message.= "Nombre de scores ajoutés .................... $nbScoresNouv / $nbRowsTot.\n"; +$message.= "Nombre de scores modifiées .................. $nbScoresModif / $nbRowsTot.\n"; +$message.= "\n"; + +foreach($tabNbRows as $declencheur => $nbTot) { + $nbModifs = $tabNbScoresModif[$declencheur]*1; + $message.= "Nombre de modifs par '$declencheur'\t...... $nbModifs / $nbTot.\n"; +} + +// Envoi Mail +$mail = new Scores_Mail_Method($c->profil->mail); +$mail->setBodyTextC($message); +$mail->setFrom('supportdev@scores-decisions.com', 'Machine'); +$mail->addTo('suivi@scores-decisions.com', 'Suivi'); +$mail->setSubjectC($subject); +$mail->execute(); + +echo date('Y/m/d H:i:s') ." - Fin du traitement.\n"; \ No newline at end of file diff --git a/scripts/scoring.php b/bin/dataScoring.php similarity index 99% rename from scripts/scoring.php rename to bin/dataScoring.php index 16f30e69..3013ec8f 100644 --- a/scripts/scoring.php +++ b/bin/dataScoring.php @@ -164,4 +164,3 @@ foreach($sourcesList as $declencheur => $sql) } } } - diff --git a/scripts/diffusionEntrepA6cmo.php b/bin/prestaA6cmoEntrep.php similarity index 98% rename from scripts/diffusionEntrepA6cmo.php rename to bin/prestaA6cmoEntrep.php index 499854b3..76d54366 100644 --- a/scripts/diffusionEntrepA6cmo.php +++ b/bin/prestaA6cmoEntrep.php @@ -1,1207 +1,1206 @@ - Libellé du client pour la prestation - * typePrestation => diffusionInsee - * (prestaActive => depuis paramètres) - * (clientIdentifiant => Code prestation, depuis paramètres) - * clientNumTourFichier => Numéro de tour du fichier pour le client - * nbBilansMax => Nombre de bilans max - * typeLigneBilan => 401 - * CodeCom => Liste des codes communes séparés par des virgules - * CJ => - * CJEx => Liste des CJ séparés par des virgules - * NAF => - * NAFEx => Liste des NAF séparés par des virgules - * freqenvois => Fréquence des envois H:Hebdo, M=Mensuel, Q=Quotidien - * mailTo => Liste des emails séparés par des virgules - * EOL => Linux : LF (\n), Windows CRLF (\r\n) - */ - -error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED); - -// --- Define path to application directory -defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); - -// --- Define application environment -defined('APPLICATION_ENV') - || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); - -// --- Composer autoload -require_once realpath(__DIR__ . '/../vendor/autoload.php'); - -// --- Create application, bootstrap, and run -$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); - -// --- Options -try { - $opts = new Zend_Console_Getopt(array( - 'help|?' => "Displays usage information.", - 'debug' => "Debuggage, genere un fichier test.", - 'cron' => "Execution par cron, automatique", - 'liste|l' => "Affichage de la liste des prestations", - 'stock|s' => "Generation du stock", - 'date=s' => "Depuis la date AAAAMMDD[HHIISS]", - 'presta|p=s' => "Execution de la prestation id", - 'force|f' => "Forcer l'execution", - 'nomail' => "Ne pas envoyer l'email", - )); - $opts->parse(); -} catch (Zend_Console_Getopt_Exception $e) { - echo $e->getUsageMessage(); - exit; -} - -// --- Usage -if( isset($opts->help) || count($opts->getOptions())==0 ) -{ - echo "Production de Stock/Diffusion des bases A6CMO (ce traitement ce lance automatiquement pour les diffusions le lundi).\n"; - echo $opts->getUsageMessage(); - exit; -} - -require_once APPLICATION_PATH.'/configs/config.php'; -require_once 'framework/fwk.php'; -require_once 'framework/common/chiffres.php'; -require_once 'framework/common/dates.php'; -require_once 'framework/mail/sendMail.php'; - -$appconfig = new Zend_Config($application->getOptions()); -$db = Zend_Db::factory($appconfig->profil->db->metier); -Zend_Db_Table_Abstract::setDefaultAdapter($db); - -// --- Liste des paramètres -$defineParams = array( - 'nomClient', - 'typePrestation', - 'clientIdentifiant', - 'clientNumTourFichier', - 'nbBilansMax', - 'typeLigneBilan', - 'CodeCom', - 'CJ', - 'CJEx', - 'NAF', - 'NAFEx', - 'freqenvois', - 'mailTo', + Libellé du client pour la prestation + * typePrestation => diffusionInsee + * (prestaActive => depuis paramètres) + * (clientIdentifiant => Code prestation, depuis paramètres) + * clientNumTourFichier => Numéro de tour du fichier pour le client + * nbBilansMax => Nombre de bilans max + * typeLigneBilan => 401 + * CodeCom => Liste des codes communes séparés par des virgules + * CJ => + * CJEx => Liste des CJ séparés par des virgules + * NAF => + * NAFEx => Liste des NAF séparés par des virgules + * freqenvois => Fréquence des envois H:Hebdo, M=Mensuel, Q=Quotidien + * mailTo => Liste des emails séparés par des virgules + * EOL => Linux : LF (\n), Windows CRLF (\r\n) + */ + +error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED); + +// --- Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); + +// --- Define application environment +defined('APPLICATION_ENV') + || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); + +// --- Composer autoload +require_once realpath(__DIR__ . '/../vendor/autoload.php'); + +// --- Create application, bootstrap, and run +$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); + +// --- Options +try { + $opts = new Zend_Console_Getopt(array( + 'help|?' => "Displays usage information.", + 'debug' => "Debuggage, genere un fichier test.", + 'cron' => "Execution par cron, automatique", + 'liste|l' => "Affichage de la liste des prestations", + 'stock|s' => "Generation du stock", + 'date=s' => "Depuis la date AAAAMMDD[HHIISS]", + 'presta|p=s' => "Execution de la prestation id", + 'force|f' => "Forcer l'execution", + 'nomail' => "Ne pas envoyer l'email", + )); + $opts->parse(); +} catch (Zend_Console_Getopt_Exception $e) { + echo $e->getUsageMessage(); + exit; +} + +// --- Usage +if( isset($opts->help) || count($opts->getOptions())==0 ) +{ + echo "Production de Stock/Diffusion des bases A6CMO (ce traitement ce lance automatiquement pour les diffusions le lundi).\n"; + echo $opts->getUsageMessage(); + exit; +} + +require_once APPLICATION_PATH.'/configs/config.php'; +require_once 'framework/fwk.php'; +require_once 'framework/common/chiffres.php'; +require_once 'framework/common/dates.php'; +require_once 'framework/mail/sendMail.php'; + +$appconfig = new Zend_Config($application->getOptions()); +$db = Zend_Db::factory($appconfig->profil->db->metier); +Zend_Db_Table_Abstract::setDefaultAdapter($db); + +// --- Liste des paramètres +$defineParams = array( + 'nomClient', + 'typePrestation', + 'clientIdentifiant', + 'clientNumTourFichier', + 'nbBilansMax', + 'typeLigneBilan', + 'CodeCom', + 'CJ', + 'CJEx', + 'NAF', + 'NAFEx', + 'freqenvois', + 'mailTo', 'EOL' -); - -// --- Liste des prestations : CLIENT | PRESTATION | ACTIVE -if ($opts->liste) { - $prestaM = new Application_Model_Sdv1ClientsPresta(); - $prestaSql = $prestaM->select(true)->setIntegrityCheck(false) - ->join('sdv1.clients', 'clients_presta.clientId = clients.id', array('nom')) - ->where('clients_presta.type=?', 'a6cmoinsee'); - $prestaResult = $prestaM->fetchAll($prestaSql); - if (count($prestaResult) == 0) { - echo date('Y-m-d H:i:s')." - Aucune prestation.\n"; - } else { - foreach ($prestaResult as $p) { - echo $p->code; - echo "\t"; - if ($p->actif==1) { - echo "ACTIF"; - } else { - echo "INACTIF"; - } - echo "\t"; - echo $p->label; - echo "\t"; - echo $p->nom; - echo "\n"; - } - } - exit; -} - - -// --- Liste des prestations pour execution -$prestaM = new Application_Model_Sdv1ClientsPresta(); -$prestaSql = $prestaM->select(true)->setIntegrityCheck(false) - ->join('sdv1.clients', 'clients_presta.clientId = clients.id', array('nom')) - ->where('clients_presta.type=?', 'a6cmoinsee'); -$prestaResult = $prestaM->fetchAll($prestaSql); -if (count($prestaResult) == 0) { - echo date('Y-m-d H:i:s')." - Aucune prestation.\n"; exit; -} - -$tabPresta = array(); -foreach ($prestaResult as $p) { - $tabPresta[$p->code] = $p; -} - -// --- Cron : Liste des prestations actives + execution -if ($opts->cron) { - -} -// --- Execution prestation unitaire -elseif ($opts->presta) { - if (array_key_exists($opts->presta, $tabPresta)) { - $tabPresta = array($opts->presta => $tabPresta[$opts->presta]); - } else { - echo date('Y-m-d H:i:s')." - Prestation inconnue\n"; - } -} -// --- Stop -else { - echo date('Y-m-d H:i:s')." - Aucune execution...\n"; -} - -$tabProduction = array(); -$tTime = array(); - -// --- Execution -foreach($tabPresta as $prestaId => $prestaDetail) { - echo date('Y-m-d H:i:s')." - Prestation ".$prestaId."\n"; - - // --- Définition des paramètres par defaut - foreach ($defineParams as $d) { - ${'Option'.ucfirst($d)} = null; - } - $OptionEOL = "\n"; - $OptionFreqenvois = 'H'; - - // --- Lire les paramètres de la prestation - $paramsM = new Application_Model_Sdv1ClientsPrestaParams(); - $paramsSql = $paramsM->select()->where('code=?', $prestaId); - $paramsResult = $paramsM->fetchAll($paramsSql); - if (count($paramsResult) == 0) { - echo date('Y-m-d H:i:s')." - Aucun paramètres.\n"; - continue; - } else { - // --- Un paramètre est enregistré dans une variable $Option{Name} - foreach ($paramsResult as $p) { - if (in_array($p->name, $defineParams)) { - ${'Option'.ucfirst($p->name)} = trim($p->value); - } - } - } - - // --- Tableau de valeur - $tabFJ = array(); - if ($OptionCJ !== null) { - $tabFJ = explode(',', $OptionCJ); - } - $tabFJexclus = array(); - if ($OptionCJEx !== null) { - $tabFJexclus = explode(',', $OptionCJEx); - } - $tabNAF = array(); - if ($OptionNAF !== null) { - $tabNAF = explode(',', $OptionNAF); - } - $tabNAFexclus = array(); - if ($OptionNAFEx !== null) { - $tabNAFexclus = explode(',', $OptionNAFEx); - } - $tabDepCom = array(); - if ($OptionCodeCom !== null) { +); + +// --- Liste des prestations : CLIENT | PRESTATION | ACTIVE +if ($opts->liste) { + $prestaM = new Application_Model_Sdv1ClientsPresta(); + $prestaSql = $prestaM->select(true)->setIntegrityCheck(false) + ->join('sdv1.clients', 'clients_presta.clientId = clients.id', array('nom')) + ->where('clients_presta.type=?', 'a6cmoinsee'); + $prestaResult = $prestaM->fetchAll($prestaSql); + if (count($prestaResult) == 0) { + echo date('Y-m-d H:i:s')." - Aucune prestation.\n"; + } else { + foreach ($prestaResult as $p) { + echo $p->code; + echo "\t"; + if ($p->actif==1) { + echo "ACTIF"; + } else { + echo "INACTIF"; + } + echo "\t"; + echo $p->label; + echo "\t"; + echo $p->nom; + echo "\n"; + } + } + exit; +} + + +// --- Liste des prestations pour execution +$prestaM = new Application_Model_Sdv1ClientsPresta(); +$prestaSql = $prestaM->select(true)->setIntegrityCheck(false) + ->join('sdv1.clients', 'clients_presta.clientId = clients.id', array('nom')) + ->where('clients_presta.type=?', 'a6cmoinsee'); +$prestaResult = $prestaM->fetchAll($prestaSql); +if (count($prestaResult) == 0) { + echo date('Y-m-d H:i:s')." - Aucune prestation.\n"; exit; +} + +$tabPresta = array(); +foreach ($prestaResult as $p) { + $tabPresta[$p->code] = $p; +} + +// --- Cron : Liste des prestations actives + execution +if ($opts->cron) { + +} +// --- Execution prestation unitaire +elseif ($opts->presta) { + if (array_key_exists($opts->presta, $tabPresta)) { + $tabPresta = array($opts->presta => $tabPresta[$opts->presta]); + } else { + echo date('Y-m-d H:i:s')." - Prestation inconnue\n"; + } +} +// --- Stop +else { + echo date('Y-m-d H:i:s')." - Aucune execution...\n"; +} + +$tabProduction = array(); +$tTime = array(); + +// --- Execution +foreach($tabPresta as $prestaId => $prestaDetail) { + echo date('Y-m-d H:i:s')." - Prestation ".$prestaId."\n"; + + // --- Définition des paramètres par defaut + foreach ($defineParams as $d) { + ${'Option'.ucfirst($d)} = null; + } + $OptionEOL = "\n"; + $OptionFreqenvois = 'H'; + + // --- Lire les paramètres de la prestation + $paramsM = new Application_Model_Sdv1ClientsPrestaParams(); + $paramsSql = $paramsM->select()->where('code=?', $prestaId); + $paramsResult = $paramsM->fetchAll($paramsSql); + if (count($paramsResult) == 0) { + echo date('Y-m-d H:i:s')." - Aucun paramètres.\n"; + continue; + } else { + // --- Un paramètre est enregistré dans une variable $Option{Name} + foreach ($paramsResult as $p) { + if (in_array($p->name, $defineParams)) { + ${'Option'.ucfirst($p->name)} = trim($p->value); + } + } + } + + // --- Tableau de valeur + $tabFJ = array(); + if ($OptionCJ !== null) { + $tabFJ = explode(',', $OptionCJ); + } + $tabFJexclus = array(); + if ($OptionCJEx !== null) { + $tabFJexclus = explode(',', $OptionCJEx); + } + $tabNAF = array(); + if ($OptionNAF !== null) { + $tabNAF = explode(',', $OptionNAF); + } + $tabNAFexclus = array(); + if ($OptionNAFEx !== null) { + $tabNAFexclus = explode(',', $OptionNAFEx); + } + $tabDepCom = array(); + if ($OptionCodeCom !== null) { $tabDepCom = explode(',', $OptionCodeCom); - } - - $prestaActive = $prestaDetail->actif; - - // --- Lire la dernière execution - $execM = new Application_Model_Sdv1PrestaOut(); - $execSql = $execM->select() - ->where('code=?', $prestaId) - ->where('dateEnd!="0000-00-00 00:00:00"') - ->order('dateEnd DESC')->limit(1); - $execResult = $execM->fetchRow($execSql); - $dateLastExec = false; - if ($execResult !== null) { - $dateLastExec = new Zend_Date($execResult->dateEnd, Zend_Date::ISO_8601); - } - $dateNow = new Zend_Date(); - - // --- Surcharge date - if (strlen($opts->date) == 8) { - $dateLastExec = new Zend_Date($opts->date, 'yyyyMMdd'); - } elseif (strlen($opts->date) == 14) { - $dateLastExec = new Zend_Date($opts->date, 'yyyyMMddHHmmss'); - } - - // --- Livraison d'un stock - if ($opts->stock) { - - } - // --- Suivi - elseif (!$opts->force) { - // --- Est ce que la prestation doit s'executer... freqenvois ? - if ($dateLastExec !== false && $dateNow->compareDate($dateLastExec, 'yyyyMMdd') == 0) { - echo date('Y-m-d H:i:s')." - Déjà executé ce jour.\n"; - continue; - } - // Fréquence Mensuelle : le 1er lundi du mois - if ($OptionFreqenvois == 'M') { - if ($dateNow->get(Zend_Date::DAY_SHORT) < 8 && $dateNow->get(Zend_Date::WEEKDAY_DIGIT) == 1) { - if ($dateLastExec === false) { - $dateLastExec = $dateNow; - $dateLastExec->subDay(31); - } - } else { - echo date('Y-m-d H:i:s')." - Pas d'execution ce jour.\n"; - continue; - } - } - // Fréquence Hebdomadaire (par défaut) : le lundi - elseif ($OptionFreqenvois == 'H') { - if ($dateNow->get(Zend_Date::WEEKDAY_DIGIT) == '1') { - if ($dateLastExec === false) { - $dateLastExec = $dateNow; - $dateLastExec->subDay(7); - } - } else { - echo date('Y-m-d H:i:s')." - Pas d'execution ce jour.\n"; - continue; - } - } - // Fréquence Quotidienne : du lundi au vendredi - elseif ($OptionFreqenvois == 'Q') { - if (in_array($dateNow->get(Zend_Date::WEEKDAY_DIGIT), array(1,2,3,4,5))) { - if ($dateLastExec === false) { - $dateLastExec = $dateNow; - $dateLastExec->subDay(1); - } - } else { - echo date('Y-m-d H:i:s')." - Pas d'execution ce jour.\n"; - continue; - } - } - } - - // Si pas de date - if ($dateLastExec === false) { - echo date('Y-m-d H:i:s')." - Pas de date.\n"; - continue; - } - $dateDebut = $dateLastExec->toString('yyyy-MM-dd HH:mm:ss'); - - if (!defined('VERSION_FICHIER_IDENTITE')) - define('VERSION_FICHIER_IDENTITE','0106'); - - $tLibFreq = array( - 'Q' => 'Quotidien', - 'H' => 'Hebdo', + } + + $prestaActive = $prestaDetail->actif; + + // --- Lire la dernière execution + $execM = new Application_Model_Sdv1PrestaOut(); + $execSql = $execM->select() + ->where('code=?', $prestaId) + ->where('dateEnd!="0000-00-00 00:00:00"') + ->order('dateEnd DESC')->limit(1); + $execResult = $execM->fetchRow($execSql); + $dateLastExec = false; + if ($execResult !== null) { + $dateLastExec = new Zend_Date($execResult->dateEnd, Zend_Date::ISO_8601); + } + $dateNow = new Zend_Date(); + + // --- Surcharge date + if (strlen($opts->date) == 8) { + $dateLastExec = new Zend_Date($opts->date, 'yyyyMMdd'); + } elseif (strlen($opts->date) == 14) { + $dateLastExec = new Zend_Date($opts->date, 'yyyyMMddHHmmss'); + } + + // --- Livraison d'un stock + if ($opts->stock) { + + } + // --- Suivi + elseif (!$opts->force) { + // --- Est ce que la prestation doit s'executer... freqenvois ? + if ($dateLastExec !== false && $dateNow->compareDate($dateLastExec, 'yyyyMMdd') == 0) { + echo date('Y-m-d H:i:s')." - Déjà executé ce jour.\n"; + continue; + } + // Fréquence Mensuelle : le 1er lundi du mois + if ($OptionFreqenvois == 'M') { + if ($dateNow->get(Zend_Date::DAY_SHORT) < 8 && $dateNow->get(Zend_Date::WEEKDAY_DIGIT) == 1) { + if ($dateLastExec === false) { + $dateLastExec = $dateNow; + $dateLastExec->subDay(31); + } + } else { + echo date('Y-m-d H:i:s')." - Pas d'execution ce jour.\n"; + continue; + } + } + // Fréquence Hebdomadaire (par défaut) : le lundi + elseif ($OptionFreqenvois == 'H') { + if ($dateNow->get(Zend_Date::WEEKDAY_DIGIT) == '1') { + if ($dateLastExec === false) { + $dateLastExec = $dateNow; + $dateLastExec->subDay(7); + } + } else { + echo date('Y-m-d H:i:s')." - Pas d'execution ce jour.\n"; + continue; + } + } + // Fréquence Quotidienne : du lundi au vendredi + elseif ($OptionFreqenvois == 'Q') { + if (in_array($dateNow->get(Zend_Date::WEEKDAY_DIGIT), array(1,2,3,4,5))) { + if ($dateLastExec === false) { + $dateLastExec = $dateNow; + $dateLastExec->subDay(1); + } + } else { + echo date('Y-m-d H:i:s')." - Pas d'execution ce jour.\n"; + continue; + } + } + } + + // Si pas de date + if ($dateLastExec === false) { + echo date('Y-m-d H:i:s')." - Pas de date.\n"; + continue; + } + $dateDebut = $dateLastExec->toString('yyyy-MM-dd HH:mm:ss'); + + if (!defined('VERSION_FICHIER_IDENTITE')) + define('VERSION_FICHIER_IDENTITE','0106'); + + $tLibFreq = array( + 'Q' => 'Quotidien', + 'H' => 'Hebdo', 'M' => 'Mensuel' - ); - - $iDb = new WDB(); - $iInsee = new Metier_Insee_MInsee($iDb); - $iBodacc = new Metier_Bodacc_MBodacc($iDb); - $iRnvp = new Metier_Partenaires_MRnvp(); - - $dateDeb = date('YmdHis'); - - $file = $OptionTypePrestation.'_'.$prestaId.'_'.$dateDeb.'.txt'; - $filepath = $appconfig->profil->path->storage . '/clients/A6CMO/' . $file; - - if (empty($opts->debug)) { - $suiviM = new Application_Model_Sdv1PrestaOut(); + ); + + $iDb = new WDB(); + $iInsee = new Metier_Insee_MInsee($iDb); + $iBodacc = new Metier_Bodacc_MBodacc($iDb); + $iRnvp = new Metier_Partenaires_MRnvp(); + + $dateDeb = date('YmdHis'); + + $file = $OptionTypePrestation.'_'.$prestaId.'_'.$dateDeb.'.txt'; + $filepath = $appconfig->profil->path->storage . '/clients/A6CMO/' . $file; + + if (empty($opts->debug)) { + $suiviM = new Application_Model_Sdv1PrestaOut(); $suiviId = $suiviM->insert(array( - 'code' => $prestaId, + 'code' => $prestaId, 'dateStart' => $dateDeb, - )); - } - - // --- Ligne d'entete - $str = initstr('001', 3, '0', ALIGN_RIGHT). // Type de ligne - initstr($dateDeb, 14 ). // Date de génération du fichier - initstr($OptionClientNumTourFichier, 10, '0', ALIGN_RIGHT). // Numéro de tour du fichier pour le client - initstr($prestaId, 36 ). // Identifiant Client - initstr($OptionTypePrestation, 32 ). // Type de prestation - initstr(VERSION_FICHIER_IDENTITE, 4 ). // Type de prestation - initstr(FILLER, 1901 ). // FILLER - ''; - - // --- Ecriture fichier - $isWrite = file_put_contents($filepath, initstr($str,LONGUEUR_LIGNE_SORTIE).$OptionEOL); - if ($isWrite === false) { - echo date('Y-m-d H:i:s')." - Impossible d'écrire le fichier $filepath\n"; - continue; - } - $nbLignes = 1; - - $tabProduction[$prestaId]['nomClient'] = $OptionNomClient; - $tabProduction[$prestaId]['dateDeb'] = $dateDeb; - $tabProduction[$prestaId]['dateRetro'] = $dateLastExec->toString('yyyy-MM-dd hh:ii:ss'); - $tabProduction[$prestaId]['frequence'] = $OptionFreqenvois; - $timeDeb = microtime(true); - - if (count($tabFJ)>0 && $tabFJ[0]<>'') { - $strFJ =' AND cj IN('.implode(',',$tabFJ).') '; - } elseif (count($tabFJexclus)>0 && $tabFJexclus[0]<>'') { - $strFJ =' AND cj NOT IN('.implode(',',$tabFJexclus).') '; - } else { - $strFJ =''; - } - - if (count($tabNAF)>0 && $tabNAF[0]<>'') { - $strNAF=" AND ape_etab IN('".implode("','",$tabNAF)."') "; - } elseif (count($tabNAFexclus)>0 && $tabNAFexclus[0]<>'') { - $strNAF=" AND ape_etab NOT IN('".implode("','",$tabNAFexclus)."') "; - } else { - $strNAF =''; - } - - $strDepCom=$strDepComStock=''; - foreach ($tabDepCom as $idepcom=>$depcom) { - /** @todo Vérifier si les DOM fonctionnent **/ - if ($idepcom==0) { - $strDepCom.="AND ("; - $strDepComStock.="AND ("; - } - $strDepCom.="(insDEPET IN ('".substr($depcom,0,2)."','0".substr($depcom,0,2)."'"; - $strDepComStock.="(adr_dep IN ('".substr($depcom,0,2)."','0".substr($depcom,0,2)."'"; - if (substr($depcom,0,2)>96) { - $strDepCom.=",'".substr($depcom,0,3)."'"; - $strDepComStock.=",'".substr($depcom,0,3)."'"; - } - $strDepCom.=") "; $strDepComStock.=") "; - if (substr($depcom,2,3)*1==0) $depSeul=true; - else { - $depSeul=false; - $strDepCom.="AND insCOMET=".substr($depcom,2,3); - $strDepComStock.="AND adr_com=".substr($depcom,2,3); - // On test si il y a présence d'un code rivoli séparé par un point "." - if (substr($depcom,5,1)=='.') { - $strDepCom.=" AND insCODEVOIE LIKE '".substr($depcom,6,4)."%'"; - $strDepComStock.=" AND rivoli LIKE '".substr($depcom,6,4)."%'"; - } - } - $strDepCom.=") "; $strDepComStock.=") "; - if (isset($tabDepCom[$idepcom+1])) { $strDepCom.=' OR '; $strDepComStock.=' OR '; } - elseif (trim(substr($depcom,3,2))<>'') { $strDepCom.=')'; $strDepComStock.=')'; } - elseif ($depSeul) { $strDepCom.=')'; $strDepComStock.=')'; } - } - - - if ($opts->stock) { - echo date('Y-m-d H:i:s') ." - Sélection du stock pour '$OptionNomClient' (dernier $OptionFreqenvois le $dateDebut)\n"; - } else { - echo date('Y-m-d H:i:s') ." - Sélection de la cible $OptionFreqenvois pour '$OptionNomClient' depuis $dateDebut...\n"; - } - - if ($opts->stock) { - $field = 'siren, nic'; - $table = 'etablissements_old'; - $where = "source=2 AND actif=1 AND siege IN (0,1) $strDepComStock $strFJ $strNAF"; - $etab = $iDb->select($table, $field, $where, false, MYSQL_ASSOC); - if ($iDb->getLastErrorNum() == 1146) { - // Table don't exist ? - $table = 'etablissements'; - $etab = $iDb->select($table, $field, $where, false, MYSQL_ASSOC); - } - } - else { - $strFJ = str_replace(' cj ',' insCJ ', $strFJ); - $strNAF = str_replace(' ape_etab ',' insAPET700 ', $strNAF); - $field = 'LPAD(insSIREN,9,0) AS siren, LPAD(insNIC,5,0) AS nic, - insDESTINAT, insEVE, insDATEVE, insTYPETAB, insSIRETPS, insSIRETASS, MAX(insMNICSIEGE) AS insMNICSIEGE, MAX(insMNOMEN) AS insMNOMEN, MAX(insMCJ) AS insMCJ, - MAX(insMAPEN) AS insMAPEN, MAX(insMENSEIGNE) AS insMENSEIGNE, MAX(insMAPET) AS insMAPET, MAX(insMADRESSE) AS insMADRESSE, MAX(insMAUXILT) AS insMAUXILT, - MAX(insMSIGLE) AS insMSIGLE, MAX(insMEXPLEN) AS insMEXPLEN, MAX(insMEXPLET) AS insMEXPLET, insDREACTET, insDREACTEN'; - $table = 'insee.insee_even'; - $where = "1 $strDepCom $strFJ $strNAF AND dateInsert>='$dateDebut' AND (insVMAJ NOT IN ('I','F') OR insVMAJ2=1 OR insVMAJ3=1) GROUP BY insSIREN, insNIC"; - $etab = $iDb->select($table, $field, $where, false, MYSQL_ASSOC); - } - - echo "SELECT $field FROM $table WHERE $where;"; - echo date('Y-m-d H:i:s')." - ".$iDb->getLastErrorMsg()."\n"; - $nbEtab = count($etab); - echo date('Y-m-d H:i:s')." - Nombre d'établissement en sortie : ".$nbEtab."\n"; - - if (empty($opts->debug)) { - $suiviM->update(array('unitTotal' => $nbEtab), 'id='.$suiviId); - } - //@todo : - - $tabProduction[$prestaId]['nbEtabs']=$nbEtab; - $unit = 0; - $nbLignes200 = $nbLignesBil = 0; - foreach ($etab as $lSiret) - { - $unit++; - - // Réinitialisation de zones - $ev_EVE=$ev_TYPETAB=$ev_DESTINAT=''; - $ev_SIRETLIE=$ev_SIRETLIETYPE=$ev_MNICSIEGE=$ev_MNOMEN=$ev_MCJ=$ev_MAPEN=$ev_DREACTEN=$ev_DATEFEREN=$ev_DATEVE=0; - $ev_MENSEIGNE=$ev_MAPET=$ev_MADRESSE=$ev_MAUXILT=$ev_MSIGLE=$ev_MEXPLEN=$ev_MEXPLET=0; - - $siren=$lSiret['siren']; - $nic=$lSiret['nic']; - $t1=microtime(1); - $a=$iInsee->getIdentiteEntreprise($siren, $nic); - $t2=microtime(1); - $tTime['Identite']+=$t2-$t1; - $b=$iInsee->getInfosNotice($siren, $nic); - $t3=microtime(1); - $tTime['Notice']+=$t3-$t2; - $c=$iInsee->getAdresse($siren, $nic); - $t4=microtime(1); - $tTime['Adresse']+=$t4-$t3; - - echo date ('Y/m/d - H:i:s')." - Entité $unit/$nbEtab - Siret $siren $nic\n"; - - if ($opts->stock === null) { - $ev_EVE=trim($lSiret['insEVE']); - // Conversion de sirene4 en sirene3 - switch($ev_EVE) { - case 'CE': // Création établissement - case 'CC': // Création par le calage - $ev_EVE=130; // Création de l'établissement - break; - case 'CS': // Création siège - $ev_EVE=110; // Création de l'entreprise - break; - case 'SU': // Cessation juridique - $ev_EVE=410; // Cessation juridique de l'entreprise - break; - case 'O': // Sortie du champ de la diffusion commerciale - $ev_EVE=795; // Personne radiée à sa demande de de la base SIRENE diffusion - break; - case 'RI': // Refus d'immatriculation au RCS - $ev_EVE=810; // Suppression du SIREN suite au refus d'inscription au RCS - break; - case 'I': // Entrée dans le champ de la diffusion commerciale - $ev_EVE=125; // Réactivation de l'entreprise suite à une mise à jour du répertoire SIRENE - break; - case 'RE': // Réactivation établissement - $ev_EVE=145; // Reprise d'activité de l'établissement suite à une mise à jour du répertoire SIRENE - break; - case 'RS': // Réactivation siège - $ev_EVE=120; // Réactivation de l'entreprise - break; - case 'SE': // Fermeture (ou désactivation) établissement - $ev_EVE=430; // Fermeture de l'établissement - break; - case 'SS': // Fermeture (ou désactivation) siège - $ev_EVE=425; // Absence d'activité d'une entreprise suite à une mise à jour au répertoire SIRENE - break; - case 'MC': // Modification par le calage - $ev_EVE=781; // Modification de l'établissement suite à correction d'erreur - break; - case 'SC': // Suppression par le calage - $ev_EVE=435; // Fermeture de l'établissement suite à une mise à jour au répertoire SIRENE - break; - case 'ME': // Modification établissement - $ev_EVE=780; // Modification de l'établissement - break; - case 'MS': // Modification siège - $ev_EVE=610; // Modification d'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production - break; - case 'MU': // Modification entreprise - $ev_EVE=631; // Modification d'activité du SIREN - break; - case 'MTDE': // Modification établissement départ (transfert) - case 'MTAE': // Modification établissement arrivée (transfert) - case 'MTDS': // Modification siège départ (transfert) - case 'MTAS': // Modification siège arrivée (transfert) - $ev_EVE=540; // Modification de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert - break; - case 'CTE': // Création établissement (transfert) - case 'CTS': // Création siège (transfert) - $ev_EVE=520; // Création de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert - break; - case 'STE': // Fermeture établissement (transfert) - case 'STS': // Fermeture siège (transfert) - $ev_EVE=530; // Modification de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert - break; - default: - $ev_EVE=substr($ev_EVE,0,3); - break; - } - $ev_DATEVE=$lSiret['insDATEVE']; - $ev_TYPETAB=$lSiret['insTYPETAB']; - $ev_DESTINAT=$lSiret['insDESTINAT']; - switch($ev_EVE*1) { - case 410: - case 420: - case 425: - $ev_DATEFEREN=substr(strtr($ev_DATEVE,array('-'=>'',':'=>'')),0,8); - break; - } - $ev_SIRETLIE=$lSiret['insSIRETPS']*1; - if ($ev_SIRETLIE<1000) { - $ev_SIRETLIE=$lSiret['insSIRETASS']*1; - if ($ev_SIRETLIE<1000) $ev_SIRETLIETYPE=''; - else $ev_SIRETLIETYPE='A'; - } else - $ev_SIRETLIETYPE='P'; - $ev_MNICSIEGE=$lSiret['insMNICSIEGE']; - $ev_MNOMEN=$lSiret['insMNOMEN']; - $ev_MCJ=$lSiret['insMCJ']; - $ev_MAPEN=$lSiret['insMAPEN']; - $ev_MENSEIGNE=$lSiret['insMENSEIGNE']; - $ev_MAPET=$lSiret['insMAPET']; - $ev_MADRESSE=$lSiret['insMADRESSE']; - $ev_MAUXILT=$lSiret['insMAUXILT']; - $ev_MSIGLE=$lSiret['insMSIGLE']; - $ev_MEXPLEN=$lSiret['insMEXPLEN']; - $ev_MEXPLET=$lSiret['insMEXPLET']; - $ev_DREACTEN=$lSiret['insDREACTEN']; - } - - $tmp = $iDb->select('jo.etablissements_act', 'bilType, bilAnnee, bilTca, bilFL', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC, false); - if (count($tmp)>0) { - $tcaSED=$tmp[0]['bilTca']; - $tcaSEDtype=$tmp[0]['bilType']; - $tcaSEDannee=$tmp[0]['bilAnnee']; - $tcaSEDmt=$tmp[0]['bilFL']; - } else { - $tcaSED=' '; - $tcaSEDtype='I'; - $tcaSEDannee='0000'; - $tcaSEDmt=0; - } - - // @todo : Forcage pour idclient=3 nimes metropole !!! - if ($prestaId=='DIFINSPRDFTSA6CMONIMESMETRO' && $tcaSED<>' ') $a['TrancheCA']=$tcaSED; - - $tabRnvp=$iRnvp->getAdresseRnvpSource(2, $a['SourceId']); - $codeRnvp=$tabRnvp['CQAdrRnvp']*1; - if ($codeRnvp>0) { - $L1rnvp=strtr($tabRnvp['L1rnvp'],'/*',' '); - $L2rnvp=$tabRnvp['L2rnvp']; - $L3rnvp=$tabRnvp['L3rnvp']; - $L4rnvp=$tabRnvp['L4rnvp']; - $L5rnvp=$tabRnvp['L5rnvp']; - $L6rnvp=$tabRnvp['L6rnvp']; - $L7rnvp=$tabRnvp['L7rnvp']; - } elseif (trim($a['L1_NOMEN'])<>'' && trim($a['L4_VOIE'])<>'' && trim($a['L6_POST'])<>'') { - // On prend l'adresse RNVP origine INSEE (Syracuse) - $L1rnvp=strtr($a['L1_NOMEN'],'/*',' '); - $L2rnvp=$a['L2_COMP']; - $L3rnvp=$a['L3_CADR']; - $L4rnvp=$a['L4_VOIE']; - $L5rnvp=$a['L5_DISP']; - $L6rnvp=$a['L6_POST']; - $L7rnvp=$a['L7_ETRG']; - } else { - // Historique Insee Notice 80 - $L1rnvp=strtr($c['L1_NOM'],'/*',' '); - $L2rnvp=$c['L2_NOM2']; - $L3rnvp=$c['L3_ADRCOMP']; - $L4rnvp=$c['L4_VOIE']; - $L5rnvp=$c['L5_DISTSP']; - $L6rnvp=$c['L6_POST']; - $L7rnvp=$c['L7_PAYS']; - } - - // 1 (3) : Obligatoire CODE_ENTETE Ligne de description structurée de l'identité - $str = initstr(200, 3) . - // 4 (10) : Obligatoire ID Numéro unique d'identification interne d'un établissement S&D - initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire SIREN Siren de l'entreprise - initstr($siren, 9 , '0', ALIGN_RIGHT) . - // 14 (5) : Obligatoire NIC Nic de l'établissement - initstr($nic, 5 , '0', ALIGN_RIGHT) . - // 14 (3) : Obligatoire SOURCE Source de la fiche d'identité - initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . - // 14 (1) : Obligatoire SIRETVALIDE Siren/siret valide - initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . - // 14 (10) : Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés - initstr($a['numRC'], 10 ) . - // 14 (6) : Facultatif TRIBUNAL Identifiant du Tribunal - initstr($a['Tribunal'], 6 ) . - // 14 (9) : Obligatoire DATEMAJ Date de la dernière mise à jour dans la base S&D - initstr(str_replace('-', '', $a['dateMajIdentite']), 8 , '0', ALIGN_RIGHT) . // @todo : Erreur date 20150730 vs 20150803 ? - // 14 (9) : Obligatoire ACTIF Établissement juridiquement actif - initstr($a['Actif'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire ACTIFECO Établissement économiquement actif - initstr($a['ActifEco'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire SITJUR Situation Juridique de l'entreprise - initstr($a['SituationJuridique'], 2 ) . - // 14 (9) : Facultatif EVE Dernier événement Insee recensé - initstr($ev_EVE, 3 ) . - // 14 (9) : Facultatif DATEVE Date du dernier événement Insee recensé - initstr(str_replace('-','', $a['DateMajINSEE']), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TYPETAB Type d'établissement concerné par l'événement - initstr($ev_TYPETAB, 2 ) . - // 14 (9) : Obligatoire SIEGE Établissement siège, secondaire ou principal - initstr($a['Siege'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire NOM Raison Sociale - initstr($a['Nom'], 160 ) . // @todo : pas de raison sociale sur certaines entités - // 14 (9) : Facultatif NOMCOM Nom commercial - initstr($a['NomCommercial'], 160 ) . - // 14 (9) : Facultatif ENSEIGNE Enseigne de l'établissement - initstr($a['Enseigne'], 80 ) . - // 14 (9) : Facultatif SIGLE sigle de l'entreprise - initstr($a['Sigle'], 40 ) . - // 14 (9) : Facultatif ADR_NUMVOIE Numéro dans la voie - initstr($a['AdresseNum'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ADR_BTQ Indicateur de répétition (Bis, Ter, etc...) - initstr($a['AdresseBtq'], 1 ) . - // 14 (9) : Facultatif ADR_TYPVOIE Type de voie - initstr($a['AdresseVoie'], 4 ) . - // 14 (9) : Obligatoire ADR_LIBVOIE Libellé de la voie - initstr($a['AdresseRue'], 32 ) . - // 14 (9) : Obligatoire ADR_LIBCOM Commune - initstr($a['Ville'], 32 ) . - // 14 (9) : Obligatoire ADR_CP Code postal - initstr($a['CP'], 5 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ADR_COMP Complément d'adresse - initstr($a['Adresse2'], 38 ) . - // 14 (9) : Facultatif ADR_DISTSP Distribution spéciale - initstr('', 38 ) . - // 14 (9) : Facultatif PAYS Pays - initstr($a['Pays'], 38 ) . - // 14 (9) : Facultatif PAYSISO2 Code Pays au format ISO2 - initstr($a['PaysIso2'], 2 ) . - // 14 (9) : Obligatoire ADR_DEP Département de l'établissement - initstr($a['Dept'], 2 ) . - // 14 (9) : Obligatoire ADR_COM Code commune de l'établissement - initstr($a['codeCommune'], 3 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif CODEVOIE Code voie de l'établissement - initstr(str_replace(' ', '', $a['Rivoli']), 5 ) . - // 14 (9) : Facultatif CODEIRIS Code Iris de l'établissement - initstr($a['codIris'], 4 ) . - // 14 (9) : Facultatif CODEILOT Code Ilot de l'établissement - initstr('', 5 ) . - // 14 (9) : Facultatif ADRESSEDOM Indicateur d'adresse de domiciliation - initstr($a['AdresseDom'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TEL Numéro de téléphone - initstr($a['Tel'], 15 ) . // @todo : Différence dans les téléphones ou absent - // 14 (9) : Facultatif FAX Numéro de télécopie - initstr($a['Fax'], 15 ) . - // 14 (9) : Facultatif WEB Site Web - initstr($a['Web'], 80 ) . - // 14 (9) : Facultatif MAIL Adresse Email de contact générique - initstr($a['Mail'], 80 ) . // @todo : Absence email - // 14 (9) : Facultatif AUXILT Auxiliarité de l'activité de l'établissement - initstr($a['Auxiliaire'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif SAISONAT Saisonnalité de l'établissement - initstr($a['Saisonnalite'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ACTIVNAT Nature de l'activité de l'établissement - initstr($a['NatureActivite'], 2 , '0', ALIGN_RIGHT) . - // P 922 - L 2 : Facultatif ORIGINE Origine de la création de l'établissement - initstr($a['OrigineCreation'], 2 ) . // @todo : aberrant 2 cas - // 14 (9) : Facultatif TYPEXPLOIT Type d'exploitation - initstr($a['TypeExploitation'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif LIEUACT Lieu de l'activité de l'établissement - initstr($a['LIEUACT'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ACTISURF Type de magasin - initstr($a['ACTISURF'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif PRODPART Participation particulière à la production de l'établissement - initstr($a['PRODPART'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ARRONET Arrondissement de l'établissement - initstr($b['insARRONET'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif CTONET Canton - initstr($b['insCTONET'], 3 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TCD Tranche de commune détaillée - initstr($b['insTCD'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ZEMET Zone d'emploi - initstr($b['insZEMET'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DU Département de l'unité urbaine de localisation - initstr($b['insDU'], 2 ) . - // 14 (9) : Facultatif TU Taille de l'unité urbaine - initstr($b['insTU'], 1 ) . - // 14 (9) : Facultatif UU Numéro de l'untié urbaine - initstr($b['insUU'], 2 ) . - // 14 (9) : Facultatif DCRET Date de création de l'établissement - initstr(str_replace('-', '', $a['DateCreaEt']), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire APE_ETAB Code activité dans la NAF rév2 de l'établissement - initstr($a['NafEtab'], 5 ) . - // 14 (9) : Facultatif NACE_ETAB Code activité NACE de l'établissement - initstr($a['NaceEtab'], 5 ) . - // 14 (9) : Facultatif DAPET Année de validité de l'activité principale de l'établissement - initstr(0, 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif EFF_ET Effectif de l'établissement - initstr($a['EffectifEtab'], 7 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TEFF_ET Tranche d'effectif de l'établissement - initstr($a['EffEtTr'], 2 ) . - // 14 (9) : Facultatif DEFET Année de mise à jour de l'effectif établissement - initstr($a['AnneeEffEt'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif MODET Modalité de l'activité pricipale de l'établissement - initstr('', 1 ) . - // 14 (9) : Facultatif EXPLET Etablissement exploitant tout ou partie des moyens de production - initstr($a['EXPLET'], 1 ) . - // 14 (9) : Facultatif RPET Région de localisation de l'établissement - initstr($b['insRPET'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DREACTET Date de réactivation de l'établissement - initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DATEFERET Date de fermeture de l'établissement - initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif EAEANT Année de validité des rubriques de niveau Etab provenant des EAE* - initstr($b['insEAEANT'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif EAEAPET Activité principale de l'établissement issue des EAE - initstr($b['insEAEAPET'], 5 ) . - // 14 (9) : Facultatif EAESEC1T Activité secondaire de l'établissement issue des EAE - initstr($b['insEAESEC1T'], 5 ) . - // 14 (9) : Facultatif EAESEC2T Autre activité secondaire de l'établissement issue des EAE - initstr($b['insEAESEC2T'], 5 ) . - // 14 (9) : Facultatif DCREN Date de création de l'entreprise - initstr(str_replace('-','',$a['DateCreaEn']), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire APE_ENT Code activité dans la NAF rév2 de l'entreprise - initstr($a['NafEnt'], 5 ) . - // 14 (9) : Facultatif NACE_ENT Code activité NACE de l'entreprise - initstr($a['NaceEnt'], 5 ) . - // 14 (9) : Facultatif DAPEN Année de validité de l'activité principale de l'entreprise - initstr(0, 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif EFF_ENT Effectif de l'entreprise - initstr($a['Effectif'], 7 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TEFF_ENT Tranche d'effectif de l'entreprise - initstr($a['EffEnTr'], 2 ) . - // 14 (9) : Facultatif DEFEN Année de mise à jour de l'effectif entreprise - initstr($a['AnneeEffEn'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif MODEN Modalité de l'activité pricipale de l'entreprise - initstr($a['MODEN'], 1 ) . - // 14 (9) : Facultatif EXPLEN Entreprise exploitant tout ou partie des moyens de production - initstr($a['EXPLEN'], 1 ) . - // 14 (9) : Facultatif RPEN Région de localisation du siège de l'entreprise - initstr($b['insRPEN'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DREACTEN Date de réactivation de l'entreprise - initstr(str_replace('-','',$ev_DREACTEN), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DATEFEREN Date de fermeture de l'entreprise - initstr(str_replace('-','',$ev_DATEFEREN), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DATEIMMAT Date d'immatriculation de l'entreprise au RCS - initstr(str_replace('-','',$a['dateImmat']),8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif DATERAD Date de radiation de l'entreprise du RCS - initstr(str_replace('-','',$a['dateRad']), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif CAPITAL Montant du capital de l'entreprise - initstr($a['Capital'], 15 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif CAPITALTYPE Type de capital - initstr($a['CapitalType'], 1 ) . - // 14 (9) : Facultatif CAPITALDEV Devise du capital - initstr($a['CapitalDev'], 3 ) . - // P 1109 - L 4 : Obligatoire, CJ Catégorie Juridique de l'entreprise - initstr($a['FJ'], 4 , '0', ALIGN_RIGHT) . // @todo non definie - // 14 (9) : Facultatif CIVILITE Civilité de l'entreprise si Personne Physique - initstr($a['Civilite'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif NBETAB Nombre d'établissements actifs de l'entreprise - initstr($a['NbEtab'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TCA Tranche de chiffre d'affaire - initstr($a['TrancheCA'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif TCAEXP Tranche de chiffre d'affaire à l'export - initstr($a['TrancheCAexp'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif APRM Activité principale au registre des métiers - initstr($a['APRM'], 6 ) . - // 14 (9) : Facultatif MONOREG Mono-régionalité de l'entreprise - initstr($a['MONOREG'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif REGIMP Principale région d'implantation de l'entreprise - initstr($a['REGIMP'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif MONOACT Mono-activité de l'entreprise - initstr($a['MONOACT'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif NICSIEGE Nic de l'établissement siège - initstr(substr($a['SiretSiege'],-5), 5 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif RECME Répertoire des Entreprises Contrôlées Majoritairement par l'État - initstr($a['RECME'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre - initstr($ev_SIRETLIE, 14 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif SIRETLIETYPE Type de sitet lié - initstr($ev_SIRETLIETYPE, 1) . - // 1151 (5) : Facultatif NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert) - initstr($a['AutreSiret']['pre']['nic'], 5 , '0', ALIGN_RIGHT) . // @todo non definie - // 14 (9) : Facultatif NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert) - initstr($a['AutreSiret']['suc']['nic'], 5 , '0', ALIGN_RIGHT) . // @todo non definie - // 14 (9) : Facultatif insDESTINAT Destination Insee - initstr($ev_DESTINAT, 2 ) . - // 14 (9) : Facultatif insDEPCOMEN Code commune Insee du siège de l'entreprise - initstr($b['insDEPCOMEN'], 5 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMNICSIEGE Indicateur de MAJ du NIC SIEGE - initstr($ev_MNICSIEGE, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMNOMEN Indicateur de MAJ de la Raison Sociale - initstr($ev_MNOMEN, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMCJ Indicateur de MAJ de la Forme Juridique - initstr($ev_MCJ, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMAPEN Indicateur de MAJ du NAF entreprise - initstr($ev_MAPEN, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE - initstr($ev_MENSEIGNE, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMAPET Indicateur de MAJ du NAF établissement - initstr($ev_MAPET, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement - initstr($ev_MADRESSE, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMAUXILT Indicateur de MAJ de l'AUXILIARITE - initstr($ev_MAUXILT, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMSIGLE Indicateur de MAJ du SIGLE - initstr($ev_MSIGLE, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep - initstr($ev_MEXPLEN, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab - initstr($ev_MEXPLET, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif ADR_RNVP Type de Prestation RNVP si RNVP - initstr($codeRnvp, 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif L1_nomen Ligne 1 : Nom de l'entreprise - initstr($L1rnvp, 38 ) . - // 14 (9) : Facultatif L2_COMP Ligne 2 : Complément de nom - initstr($L2rnvp, 38 ) . - // 14 (9) : Facultatif L3_CADR Ligne 3 : Complément d'adresse - initstr($L3rnvp, 38 ) . - // 14 (9) : Facultatif L4_VOIE Ligne 4 : Adresse - initstr($L4rnvp, 38 ) . - // 14 (9) : Facultatif L5_DISP Ligne 5 : Distribution spéciale - initstr($L5rnvp, 38 ) . - // 14 (9) : Facultatif L6_POST Ligne 6 : Code Postal, commune, etc.. - initstr($L6rnvp, 38 ) . - initstr($L7rnvp, 38 ) . - // 14 (9) : Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE* - initstr($b['insEAEANN'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE - initstr($b['insEAEAPEN'], 5 ) . - // 14 (9) : Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE - initstr($b['insEAESEC1N'], 5 ) . - // 14 (9) : Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE - initstr($b['insEAESEC2N'], 5 ) . - // 14 (9) : Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE - initstr($b['insEAESEC3N'], 5 ) . - // 14 (9) : Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE - initstr($b['insEAESEC4N'], 5 ) . - // P 1475 - L 12 : Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984) - initstr($a['GeoLat'], 12 , ' ', ALIGN_RIGHT) . // @todo : format - // 14 (9) : Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984) - initstr($a['GeoLon'], 12 , ' ', ALIGN_RIGHT) . // @todo : format - // P 1499 - L 1 : Facultatif GPSP Niveau de précision du géocodage - initstr($a['GeoPrecis'], 1 , '0', ALIGN_RIGHT) . // @todo : format - // 14 (9) : Facultatif ZUS Identifiant de la Zone Urbaine Sensible - initstr($a['GeoInfos']['NZUS'], 10 ) . - // 14 (9) : Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine - initstr($a['GeoInfos']['NZRU'], 10 ) . - // 14 (9) : Facultatif ZFU Identifiant de la Zone Franche Urbaine - initstr($a['GeoInfos']['NZFU'], 10 ) . - // 14 (9) : Facultatif CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social - initstr($a['GeoInfos']['NCUCS'],10 ) . - // 14 (9) : Facultatif AFR Identifiant de la Zone AFR - initstr($a['GeoInfos']['NAFR'], 10 ) . - // 14 (9) : Facultatif ZRR Identifiant de la ZRR - initstr($a['GeoInfos']['NZRR'], 10 ) . - // P 160 - L 15 Facultatif TVA Numéro de TVA Intracommunataire - initstr($a['TvaNumero'], 15 ) . - // P 1575 - L 1 : Facultatif TVAVALIDE Numéro de TVA validé - initstr($a['TvaAttribue'], 1 , '0', ALIGN_RIGHT) . - // P 1576 - L 1 : Facultatif ANCIENSIEGE Ancien siège - initstr($a['AncienSiege'], 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse - initstr($a['Isin'], 12 ) . - // 14 (9) : Facultatif PPDIR1NOM Nom du principal dirigeant - initstr($a['dir1Nom'], 40 ) . - - // 14 (9) : Facultatif PPDIR1PRENOM Prénom du principal dirigeant - initstr(preg_replace('/,?\s.*$/','',$a['dir1Prenom']), 30 ) . - // 14 (9) : Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant - initstr($a['dir1NomUsage'], 40 ) . - // 14 (9) : Facultatif PPDIR1DNAISS Date de naissance - initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT). - // 14 (9) : Facultatif PPDIR1LNAISS Lieu de Naissance - initstr($a['dir1LieuNaiss'], 35 ) . - // P 1742 - L 4 : Facultatif PPDIR1FONC Code Fonction - initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // @todo : Pas les mêmes code - correction dans lib - // 14 (9) : Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant - initstr(str_replace('-', '', $a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . - - // 14 (9) : Facultatif PPDIR2NOM Nom du seconde principal dirigeant - initstr($a['dir2Nom'], 40 ) . - // 14 (9) : Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant - initstr(preg_replace('/,?\s.*$/', '', $a['dir2Prenom']), 30 ) . - // 14 (9) : Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant - initstr($a['dir2NomUsage'], 40 ) . - // 14 (9) : Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant - initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT). - // 14 (9) : Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant - initstr($a['dir2LieuNaiss'], 35 ) . - // 14 (9) : Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant - initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant - initstr(str_replace('-','', $a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif BILANCLOT Date de dernière clôture de bilan disponible - initstr(str_replace('-','', $a['bilanDate']), 8 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif BILANDUREE Durée du dernier exercice disponible - initstr($a['bilanMois'], 2 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible - initstr($tcaSEDmt, 15 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif BILANRES Résultat au dernier bilan disponible - initstr($a['bilanHN'], 15 , '0', ALIGN_RIGHT) . - // 14 (9) : Tranche de CA SED - initstr($tcaSED, 1 ) . - // 14 (9) : Type de tranche de CA : (R)éel, (I)nconnu ou (E)stimé - initstr($tcaSEDtype, 1 ) . - // 14 (9) : Année du CA - initstr($tcaSEDannee, 4 ) . - // 14 (9) : PPDIR1 Genre - initstr($a['dir1Genre'], 1 ) . // @todo : De temps en temps non délivrés - // 14 (9) : PPDIR2 Genre - initstr($a['dir2Genre'], 1 ) . // @todo : De temps en temps non délivrés - // 14 (9) : Indicateur du champ de publipostage - initstr($a['IND_PUBLIPO']*1, 1 ) . - // 14 (9) : Facultatif FILLER1 Zone libre - initstr(' ', 32 ) ; - - /* - AnneeTCA - CapitalNbActions - CapitalMtActions - */ - // --- Ecriture ligne 200 - if ($opts->debug && mb_strlen($str)>LONGUEUR_LIGNE_SORTIE) { - echo date('Y-m-d H:i:s')." - Ligne supérieur à LONGUEUR MAX"; - } - file_put_contents($filepath, initstr($str,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); - $nbLignes++; - $nbLignes200++; - - $mBil=new Metier_Partenaires_MBilans($siren); - $tabBilans = $mBil->listeBilans(); - $iBil=0; - if ($OptionNbBilansMax>0) { - foreach ($tabBilans as $idxBilan=>$derBilan) { - $iBil++; - $t5=microtime(1); - $p = $mBil->getBilan(WDate::dateT('Ymd','d/m/Y',$derBilan['dateExercice']), $derBilan['typeBilan']); - $t6=microtime(1); - $tTime['Bilan']+=$t6-$t5; - - //print_r($p); - if ($p['CONSOLIDE']=='S') $numLiasse='2033'; - else $numLiasse='2050'; - $unite=strtoupper($p['MONNAIE_LIV_UNITE']); - if ($unite=='') $unite='U'; - $nbLignesBil++; - // 14 (9) : Obligatoire CODE_ENTETE Ligne de description structurée de l'identité - $strIni = initstr($OptionTypeLigneBilan, 3) . - // 14 (9) : Obligatoire ID Numéro unique d'identification interne d'un établissement S&D - initstr($a['SourceId'], 10, '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire SIREN Siren de l'entreprise - initstr($siren, 9, '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire NIC Nic de l'établissement - initstr($nic, 5, '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire SOURCE Source de la fiche d'identité - initstr($a['Source'], 3, '0', ALIGN_RIGHT) . - // 14 (9) : Obligatoire SIRETVALIDE Siren/siret valide - initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . - // 14 (9) : Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés - initstr($a['numRC'], 10 ) . - // 14 (9) : Facultatif TRIBUNAL Identifiant du Tribunal - initstr($a['Tribunal'], 6 ) . - // DATEMAJ Date de la dernière mise à jour du bilan dans la base S&D Format AAAAMMJJ - initstr(str_replace('-','',$p['DATE_FRAICHE_BILAN']), 8, '0', ALIGN_RIGHT) . - // MILLESIME Année du bilan - initstr(substr($p['DATE_FRAICHE_BILAN'],0,4), 4, '0', ALIGN_RIGHT) . - // BILAN_DATE Date de clôture du bilan Format AAAAMMJJ - initstr(str_replace('-','',$p['DATE_CLOTURE']), 8, '0', ALIGN_RIGHT) . - // BILAN_DUREE Durée de l'exercice en mois - initstr($p['DUREE_MOIS'], 2, '0', ALIGN_RIGHT) . - // BILAN_DATEP Date de clôture du bilan précédent Format AAAAMMJJ - initstr(str_replace('-','',$p['DATE_CLOTURE_PRE']), 8, '0', ALIGN_RIGHT) . - // BILAN_DUREEP Durée de l'exercice précédent en mois - initstr($p['DUREE_MOIS_PRE'], 2, '0', ALIGN_RIGHT) . - // BILAN_LIASSE Numéro de la première liasse du bilan 2033,2050 - initstr($numLiasse,4) . - // BILAN_TYPE Type de bilan S=Réel Normal Simplifié, C=Consolidé, N=Réel Normal - initstr($p['CONSOLIDE'], 1) . - // BILAN_MONNAIE Code devise de livraison selon la norme ISO 4217 (3 lettres) - initstr($p['MONNAIE'], 3) . - // BILAN_MONNAIEO Code devise d'origine du bilan selon la norme ISO 4217* - initstr($p['MONNAIE_ORI'], 3) . - // BILAN_UNITE Unité du bilan livré U=en unité de devise, K=en milliers, M=en millions - initstr($unite, 1); - - unset($p['SIREN']); - unset($p['SOURCE']); - unset($p['devise']); - unset($p['DATE_FRAICHE_BILAN']); - unset($p['DATE_CLOTURE']); - unset($p['DATE_CLOTURE_PRE']); - unset($p['DUREE_MOIS']); - unset($p['DUREE_MOIS_PRE']); - unset($p['MONNAIE']); - unset($p['CONSOLIDE']); - unset($p['MONNAIE_ORI']); - unset($p['MONNAIE_LIV_UNITE']); - $strIni.=initstr(count($p), 4, '0', ALIGN_RIGHT); // BILAN_NBPOSTES Nombre de postes livrés - $nbP=0; - $strP=''; - if ($OptionTypeLigneBilan==400) { - foreach ($p as $code=>$valeur) { - $nbP++; - if ($valeur>=0) $signe='+'; - else $signe='-'; - $strP.= initstr($code, 4).$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); - if($nbP<76) continue; - - // --- Ecriture ligne 400 - file_put_contents($filepath, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); - $nbLignes++; - $nbLignesBil++; - $nbP=0;$strP=''; - } - if($nbP<76) { // Ecriture de la dernière ligne sauf s'il y a dejà 76 postes - // --- Ecriture ligne 400 - file_put_contents($filepath, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); - $nbLignes++; - $nbLignesBil++; - } - } else { - $uniteMultiple=1; - switch (strtoupper($unite)) { - case 'K': $uniteMultiple=1000; break; - case 'M': $uniteMultiple=1000000; break; - } - if ($p['CONSOLIDE']=='S') $tabPostes=$iBilan->bilanSimplifie2Normal($p); - else $tabPostes=$p; - - // Chiffre d'affaires - Poste FL au format 2050 - $strP.= @exporteRatio($p['FL']); - // Chiffre d'affaires Export - Poste FK - $strP.= @exporteRatio($p['FK']); - // Valeur Ajoutée - R130 = FL + FM+FN - (FS+FU) - (FT+FV) - (FW-HP-HQ) - $va=$p['FL'] + $p['FM'] + $p['FN'] - ($p['FS'] + $p['FU']) - ($p['FT'] + $p['FV']) - ($p['FW']-$p['HP']-$p['HQ']); - $strP.= @exporteRatio($va); - // Masse salariale - R132 = FY + FZ - $ms=$p['FY'] + $p['FZ']; - $strP.= @exporteRatio($ms); - // EBE - R140 = R130-R132 - FX + FO - $strP.= @exporteRatio($va-$ms - $p['FX'] + $p['FO']); - // Personnel extérieur à l'entreprise, Intérim = Poste YU - $strP.= @exporteRatio($p['YU']); - // Sous-traitance - $strP.= @exporteRatio($p['YT']); - // Effectif - $strP.= @exporteRatio($p['YP']); - // Capital - Poste DA - $strP.= @exporteRatio($p['DA']); - // Montant des Immo. Corp. Terrains Brut Poste AN - $strP.= @exporteRatio($p['AN']); - // Montant des Immo. Corp. Constructions Poste AP - $strP.= @exporteRatio($p['AP']); - // Montant des Installations Techniques, matériel et outillage industriels Poste AR - $strP.= @exporteRatio($p['AR']); - // Montant des Immo. Corp. Brut =AN+AP+AR+AT+AV+AX - $strP.= @exporteRatio($p['AN'] + $p['AP'] + $p['AR'] + $p['AT'] + $p['AV'] + $p['AX']); - // Montant des Immo. Corp. Net =AN-AO + AP-AQ + AR-AS + AT-AU + AV-AW + AX-AY - $strP.= @exporteRatio($p['AN']-$p['AO'] + $p['AP']-$p['AQ'] + $p['AR']-$p['AS'] + $p['AT']-$p['AU'] + $p['AV']-$p['AW'] + $p['AX']-$p['AY']); - // Montant des Immo. Incorp. Brut =AB+AD+AF+AH+AJ+AL - $strP.= @exporteRatio($p['AB'] + $p['AD'] + $p['AF'] + $p['AH'] + $p['AJ'] + $p['AL']); - // Montant des Immo. Incorp. Net =AB-AC + AD-AE + AF-AG + AH-AI + AJ-AK + AL-AM - $strP.= @exporteRatio($p['AB']-$p['AC'] + $p['AD']-$p['AE'] + $p['AF']-$p['AG'] + $p['AH']-$p['AI'] + $p['AJ']-$p['AK'] + $p['AL']-$p['AM']); - // Montant des Taxe professionnelle Poste YW - $strP.= @exporteRatio($p['YW']); - - // --- Ecriture ligne - file_put_contents($filepath, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); - $nbLignes++; - $nbLignesBil++; - $strP=''; - } - if ($iBil==$OptionNbBilansMax) break; - } - } - - if (empty($opts->debug)) { - $suiviM->update(array( - 'unitIncrement' => $unit, + )); + } + + // --- Ligne d'entete + $str = initstr('001', 3, '0', ALIGN_RIGHT). // Type de ligne + initstr($dateDeb, 14 ). // Date de génération du fichier + initstr($OptionClientNumTourFichier, 10, '0', ALIGN_RIGHT). // Numéro de tour du fichier pour le client + initstr($prestaId, 36 ). // Identifiant Client + initstr($OptionTypePrestation, 32 ). // Type de prestation + initstr(VERSION_FICHIER_IDENTITE, 4 ). // Type de prestation + initstr(FILLER, 1901 ). // FILLER + ''; + + // --- Ecriture fichier + $isWrite = file_put_contents($filepath, initstr($str,LONGUEUR_LIGNE_SORTIE).$OptionEOL); + if ($isWrite === false) { + echo date('Y-m-d H:i:s')." - Impossible d'écrire le fichier $filepath\n"; + continue; + } + $nbLignes = 1; + + $tabProduction[$prestaId]['nomClient'] = $OptionNomClient; + $tabProduction[$prestaId]['dateDeb'] = $dateDeb; + $tabProduction[$prestaId]['dateRetro'] = $dateLastExec->toString('yyyy-MM-dd hh:ii:ss'); + $tabProduction[$prestaId]['frequence'] = $OptionFreqenvois; + $timeDeb = microtime(true); + + if (count($tabFJ)>0 && $tabFJ[0]<>'') { + $strFJ =' AND cj IN('.implode(',',$tabFJ).') '; + } elseif (count($tabFJexclus)>0 && $tabFJexclus[0]<>'') { + $strFJ =' AND cj NOT IN('.implode(',',$tabFJexclus).') '; + } else { + $strFJ =''; + } + + if (count($tabNAF)>0 && $tabNAF[0]<>'') { + $strNAF=" AND ape_etab IN('".implode("','",$tabNAF)."') "; + } elseif (count($tabNAFexclus)>0 && $tabNAFexclus[0]<>'') { + $strNAF=" AND ape_etab NOT IN('".implode("','",$tabNAFexclus)."') "; + } else { + $strNAF =''; + } + + $strDepCom=$strDepComStock=''; + foreach ($tabDepCom as $idepcom=>$depcom) { + /** @todo Vérifier si les DOM fonctionnent **/ + if ($idepcom==0) { + $strDepCom.="AND ("; + $strDepComStock.="AND ("; + } + $strDepCom.="(insDEPET IN ('".substr($depcom,0,2)."','0".substr($depcom,0,2)."'"; + $strDepComStock.="(adr_dep IN ('".substr($depcom,0,2)."','0".substr($depcom,0,2)."'"; + if (substr($depcom,0,2)>96) { + $strDepCom.=",'".substr($depcom,0,3)."'"; + $strDepComStock.=",'".substr($depcom,0,3)."'"; + } + $strDepCom.=") "; $strDepComStock.=") "; + if (substr($depcom,2,3)*1==0) $depSeul=true; + else { + $depSeul=false; + $strDepCom.="AND insCOMET=".substr($depcom,2,3); + $strDepComStock.="AND adr_com=".substr($depcom,2,3); + // On test si il y a présence d'un code rivoli séparé par un point "." + if (substr($depcom,5,1)=='.') { + $strDepCom.=" AND insCODEVOIE LIKE '".substr($depcom,6,4)."%'"; + $strDepComStock.=" AND rivoli LIKE '".substr($depcom,6,4)."%'"; + } + } + $strDepCom.=") "; $strDepComStock.=") "; + if (isset($tabDepCom[$idepcom+1])) { $strDepCom.=' OR '; $strDepComStock.=' OR '; } + elseif (trim(substr($depcom,3,2))<>'') { $strDepCom.=')'; $strDepComStock.=')'; } + elseif ($depSeul) { $strDepCom.=')'; $strDepComStock.=')'; } + } + + + if ($opts->stock) { + echo date('Y-m-d H:i:s') ." - Sélection du stock pour '$OptionNomClient' (dernier $OptionFreqenvois le $dateDebut)\n"; + } else { + echo date('Y-m-d H:i:s') ." - Sélection de la cible $OptionFreqenvois pour '$OptionNomClient' depuis $dateDebut...\n"; + } + + if ($opts->stock) { + $field = 'siren, nic'; + $table = 'etablissements_old'; + $where = "source=2 AND actif=1 AND siege IN (0,1) $strDepComStock $strFJ $strNAF"; + $etab = $iDb->select($table, $field, $where, false, MYSQL_ASSOC); + if ($iDb->getLastErrorNum() == 1146) { + // Table don't exist ? + $table = 'etablissements'; + $etab = $iDb->select($table, $field, $where, false, MYSQL_ASSOC); + } + } + else { + $strFJ = str_replace(' cj ',' insCJ ', $strFJ); + $strNAF = str_replace(' ape_etab ',' insAPET700 ', $strNAF); + $field = 'LPAD(insSIREN,9,0) AS siren, LPAD(insNIC,5,0) AS nic, + insDESTINAT, insEVE, insDATEVE, insTYPETAB, insSIRETPS, insSIRETASS, MAX(insMNICSIEGE) AS insMNICSIEGE, MAX(insMNOMEN) AS insMNOMEN, MAX(insMCJ) AS insMCJ, + MAX(insMAPEN) AS insMAPEN, MAX(insMENSEIGNE) AS insMENSEIGNE, MAX(insMAPET) AS insMAPET, MAX(insMADRESSE) AS insMADRESSE, MAX(insMAUXILT) AS insMAUXILT, + MAX(insMSIGLE) AS insMSIGLE, MAX(insMEXPLEN) AS insMEXPLEN, MAX(insMEXPLET) AS insMEXPLET, insDREACTET, insDREACTEN'; + $table = 'insee.insee_even'; + $where = "1 $strDepCom $strFJ $strNAF AND dateInsert>='$dateDebut' AND (insVMAJ NOT IN ('I','F') OR insVMAJ2=1 OR insVMAJ3=1) GROUP BY insSIREN, insNIC"; + $etab = $iDb->select($table, $field, $where, false, MYSQL_ASSOC); + } + + echo "SELECT $field FROM $table WHERE $where;"; + echo date('Y-m-d H:i:s')." - ".$iDb->getLastErrorMsg()."\n"; + $nbEtab = count($etab); + echo date('Y-m-d H:i:s')." - Nombre d'établissement en sortie : ".$nbEtab."\n"; + + if (empty($opts->debug)) { + $suiviM->update(array('unitTotal' => $nbEtab), 'id='.$suiviId); + } + //@todo : + + $tabProduction[$prestaId]['nbEtabs']=$nbEtab; + $unit = 0; + $nbLignes200 = $nbLignesBil = 0; + foreach ($etab as $lSiret) + { + $unit++; + + // Réinitialisation de zones + $ev_EVE=$ev_TYPETAB=$ev_DESTINAT=''; + $ev_SIRETLIE=$ev_SIRETLIETYPE=$ev_MNICSIEGE=$ev_MNOMEN=$ev_MCJ=$ev_MAPEN=$ev_DREACTEN=$ev_DATEFEREN=$ev_DATEVE=0; + $ev_MENSEIGNE=$ev_MAPET=$ev_MADRESSE=$ev_MAUXILT=$ev_MSIGLE=$ev_MEXPLEN=$ev_MEXPLET=0; + + $siren=$lSiret['siren']; + $nic=$lSiret['nic']; + $t1=microtime(1); + $a=$iInsee->getIdentiteEntreprise($siren, $nic); + $t2=microtime(1); + $tTime['Identite']+=$t2-$t1; + $b=$iInsee->getInfosNotice($siren, $nic); + $t3=microtime(1); + $tTime['Notice']+=$t3-$t2; + $c=$iInsee->getAdresse($siren, $nic); + $t4=microtime(1); + $tTime['Adresse']+=$t4-$t3; + + echo date ('Y/m/d - H:i:s')." - Entité $unit/$nbEtab - Siret $siren $nic\n"; + + if ($opts->stock === null) { + $ev_EVE=trim($lSiret['insEVE']); + // Conversion de sirene4 en sirene3 + switch($ev_EVE) { + case 'CE': // Création établissement + case 'CC': // Création par le calage + $ev_EVE=130; // Création de l'établissement + break; + case 'CS': // Création siège + $ev_EVE=110; // Création de l'entreprise + break; + case 'SU': // Cessation juridique + $ev_EVE=410; // Cessation juridique de l'entreprise + break; + case 'O': // Sortie du champ de la diffusion commerciale + $ev_EVE=795; // Personne radiée à sa demande de de la base SIRENE diffusion + break; + case 'RI': // Refus d'immatriculation au RCS + $ev_EVE=810; // Suppression du SIREN suite au refus d'inscription au RCS + break; + case 'I': // Entrée dans le champ de la diffusion commerciale + $ev_EVE=125; // Réactivation de l'entreprise suite à une mise à jour du répertoire SIRENE + break; + case 'RE': // Réactivation établissement + $ev_EVE=145; // Reprise d'activité de l'établissement suite à une mise à jour du répertoire SIRENE + break; + case 'RS': // Réactivation siège + $ev_EVE=120; // Réactivation de l'entreprise + break; + case 'SE': // Fermeture (ou désactivation) établissement + $ev_EVE=430; // Fermeture de l'établissement + break; + case 'SS': // Fermeture (ou désactivation) siège + $ev_EVE=425; // Absence d'activité d'une entreprise suite à une mise à jour au répertoire SIRENE + break; + case 'MC': // Modification par le calage + $ev_EVE=781; // Modification de l'établissement suite à correction d'erreur + break; + case 'SC': // Suppression par le calage + $ev_EVE=435; // Fermeture de l'établissement suite à une mise à jour au répertoire SIRENE + break; + case 'ME': // Modification établissement + $ev_EVE=780; // Modification de l'établissement + break; + case 'MS': // Modification siège + $ev_EVE=610; // Modification d'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production + break; + case 'MU': // Modification entreprise + $ev_EVE=631; // Modification d'activité du SIREN + break; + case 'MTDE': // Modification établissement départ (transfert) + case 'MTAE': // Modification établissement arrivée (transfert) + case 'MTDS': // Modification siège départ (transfert) + case 'MTAS': // Modification siège arrivée (transfert) + $ev_EVE=540; // Modification de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert + break; + case 'CTE': // Création établissement (transfert) + case 'CTS': // Création siège (transfert) + $ev_EVE=520; // Création de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert + break; + case 'STE': // Fermeture établissement (transfert) + case 'STS': // Fermeture siège (transfert) + $ev_EVE=530; // Modification de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert + break; + default: + $ev_EVE=substr($ev_EVE,0,3); + break; + } + $ev_DATEVE=$lSiret['insDATEVE']; + $ev_TYPETAB=$lSiret['insTYPETAB']; + $ev_DESTINAT=$lSiret['insDESTINAT']; + switch($ev_EVE*1) { + case 410: + case 420: + case 425: + $ev_DATEFEREN=substr(strtr($ev_DATEVE,array('-'=>'',':'=>'')),0,8); + break; + } + $ev_SIRETLIE=$lSiret['insSIRETPS']*1; + if ($ev_SIRETLIE<1000) { + $ev_SIRETLIE=$lSiret['insSIRETASS']*1; + if ($ev_SIRETLIE<1000) $ev_SIRETLIETYPE=''; + else $ev_SIRETLIETYPE='A'; + } else + $ev_SIRETLIETYPE='P'; + $ev_MNICSIEGE=$lSiret['insMNICSIEGE']; + $ev_MNOMEN=$lSiret['insMNOMEN']; + $ev_MCJ=$lSiret['insMCJ']; + $ev_MAPEN=$lSiret['insMAPEN']; + $ev_MENSEIGNE=$lSiret['insMENSEIGNE']; + $ev_MAPET=$lSiret['insMAPET']; + $ev_MADRESSE=$lSiret['insMADRESSE']; + $ev_MAUXILT=$lSiret['insMAUXILT']; + $ev_MSIGLE=$lSiret['insMSIGLE']; + $ev_MEXPLEN=$lSiret['insMEXPLEN']; + $ev_MEXPLET=$lSiret['insMEXPLET']; + $ev_DREACTEN=$lSiret['insDREACTEN']; + } + + $tmp = $iDb->select('jo.etablissements_act', 'bilType, bilAnnee, bilTca, bilFL', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC, false); + if (count($tmp)>0) { + $tcaSED=$tmp[0]['bilTca']; + $tcaSEDtype=$tmp[0]['bilType']; + $tcaSEDannee=$tmp[0]['bilAnnee']; + $tcaSEDmt=$tmp[0]['bilFL']; + } else { + $tcaSED=' '; + $tcaSEDtype='I'; + $tcaSEDannee='0000'; + $tcaSEDmt=0; + } + + // @todo : Forcage pour idclient=3 nimes metropole !!! + if ($prestaId=='DIFINSPRDFTSA6CMONIMESMETRO' && $tcaSED<>' ') $a['TrancheCA']=$tcaSED; + + $tabRnvp=$iRnvp->getAdresseRnvpSource(2, $a['SourceId']); + $codeRnvp=$tabRnvp['CQAdrRnvp']*1; + if ($codeRnvp>0) { + $L1rnvp=strtr($tabRnvp['L1rnvp'],'/*',' '); + $L2rnvp=$tabRnvp['L2rnvp']; + $L3rnvp=$tabRnvp['L3rnvp']; + $L4rnvp=$tabRnvp['L4rnvp']; + $L5rnvp=$tabRnvp['L5rnvp']; + $L6rnvp=$tabRnvp['L6rnvp']; + $L7rnvp=$tabRnvp['L7rnvp']; + } elseif (trim($a['L1_NOMEN'])<>'' && trim($a['L4_VOIE'])<>'' && trim($a['L6_POST'])<>'') { + // On prend l'adresse RNVP origine INSEE (Syracuse) + $L1rnvp=strtr($a['L1_NOMEN'],'/*',' '); + $L2rnvp=$a['L2_COMP']; + $L3rnvp=$a['L3_CADR']; + $L4rnvp=$a['L4_VOIE']; + $L5rnvp=$a['L5_DISP']; + $L6rnvp=$a['L6_POST']; + $L7rnvp=$a['L7_ETRG']; + } else { + // Historique Insee Notice 80 + $L1rnvp=strtr($c['L1_NOM'],'/*',' '); + $L2rnvp=$c['L2_NOM2']; + $L3rnvp=$c['L3_ADRCOMP']; + $L4rnvp=$c['L4_VOIE']; + $L5rnvp=$c['L5_DISTSP']; + $L6rnvp=$c['L6_POST']; + $L7rnvp=$c['L7_PAYS']; + } + + // 1 (3) : Obligatoire CODE_ENTETE Ligne de description structurée de l'identité + $str = initstr(200, 3) . + // 4 (10) : Obligatoire ID Numéro unique d'identification interne d'un établissement S&D + initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire SIREN Siren de l'entreprise + initstr($siren, 9 , '0', ALIGN_RIGHT) . + // 14 (5) : Obligatoire NIC Nic de l'établissement + initstr($nic, 5 , '0', ALIGN_RIGHT) . + // 14 (3) : Obligatoire SOURCE Source de la fiche d'identité + initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . + // 14 (1) : Obligatoire SIRETVALIDE Siren/siret valide + initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . + // 14 (10) : Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés + initstr($a['numRC'], 10 ) . + // 14 (6) : Facultatif TRIBUNAL Identifiant du Tribunal + initstr($a['Tribunal'], 6 ) . + // 14 (9) : Obligatoire DATEMAJ Date de la dernière mise à jour dans la base S&D + initstr(str_replace('-', '', $a['dateMajIdentite']), 8 , '0', ALIGN_RIGHT) . // @todo : Erreur date 20150730 vs 20150803 ? + // 14 (9) : Obligatoire ACTIF Établissement juridiquement actif + initstr($a['Actif'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire ACTIFECO Établissement économiquement actif + initstr($a['ActifEco'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire SITJUR Situation Juridique de l'entreprise + initstr($a['SituationJuridique'], 2 ) . + // 14 (9) : Facultatif EVE Dernier événement Insee recensé + initstr($ev_EVE, 3 ) . + // 14 (9) : Facultatif DATEVE Date du dernier événement Insee recensé + initstr(str_replace('-','', $a['DateMajINSEE']), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TYPETAB Type d'établissement concerné par l'événement + initstr($ev_TYPETAB, 2 ) . + // 14 (9) : Obligatoire SIEGE Établissement siège, secondaire ou principal + initstr($a['Siege'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire NOM Raison Sociale + initstr($a['Nom'], 160 ) . // @todo : pas de raison sociale sur certaines entités + // 14 (9) : Facultatif NOMCOM Nom commercial + initstr($a['NomCommercial'], 160 ) . + // 14 (9) : Facultatif ENSEIGNE Enseigne de l'établissement + initstr($a['Enseigne'], 80 ) . + // 14 (9) : Facultatif SIGLE sigle de l'entreprise + initstr($a['Sigle'], 40 ) . + // 14 (9) : Facultatif ADR_NUMVOIE Numéro dans la voie + initstr($a['AdresseNum'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ADR_BTQ Indicateur de répétition (Bis, Ter, etc...) + initstr($a['AdresseBtq'], 1 ) . + // 14 (9) : Facultatif ADR_TYPVOIE Type de voie + initstr($a['AdresseVoie'], 4 ) . + // 14 (9) : Obligatoire ADR_LIBVOIE Libellé de la voie + initstr($a['AdresseRue'], 32 ) . + // 14 (9) : Obligatoire ADR_LIBCOM Commune + initstr($a['Ville'], 32 ) . + // 14 (9) : Obligatoire ADR_CP Code postal + initstr($a['CP'], 5 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ADR_COMP Complément d'adresse + initstr($a['Adresse2'], 38 ) . + // 14 (9) : Facultatif ADR_DISTSP Distribution spéciale + initstr('', 38 ) . + // 14 (9) : Facultatif PAYS Pays + initstr($a['Pays'], 38 ) . + // 14 (9) : Facultatif PAYSISO2 Code Pays au format ISO2 + initstr($a['PaysIso2'], 2 ) . + // 14 (9) : Obligatoire ADR_DEP Département de l'établissement + initstr($a['Dept'], 2 ) . + // 14 (9) : Obligatoire ADR_COM Code commune de l'établissement + initstr($a['codeCommune'], 3 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif CODEVOIE Code voie de l'établissement + initstr(str_replace(' ', '', $a['Rivoli']), 5 ) . + // 14 (9) : Facultatif CODEIRIS Code Iris de l'établissement + initstr($a['codIris'], 4 ) . + // 14 (9) : Facultatif CODEILOT Code Ilot de l'établissement + initstr('', 5 ) . + // 14 (9) : Facultatif ADRESSEDOM Indicateur d'adresse de domiciliation + initstr($a['AdresseDom'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TEL Numéro de téléphone + initstr($a['Tel'], 15 ) . // @todo : Différence dans les téléphones ou absent + // 14 (9) : Facultatif FAX Numéro de télécopie + initstr($a['Fax'], 15 ) . + // 14 (9) : Facultatif WEB Site Web + initstr($a['Web'], 80 ) . + // 14 (9) : Facultatif MAIL Adresse Email de contact générique + initstr($a['Mail'], 80 ) . // @todo : Absence email + // 14 (9) : Facultatif AUXILT Auxiliarité de l'activité de l'établissement + initstr($a['Auxiliaire'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif SAISONAT Saisonnalité de l'établissement + initstr($a['Saisonnalite'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ACTIVNAT Nature de l'activité de l'établissement + initstr($a['NatureActivite'], 2 , '0', ALIGN_RIGHT) . + // P 922 - L 2 : Facultatif ORIGINE Origine de la création de l'établissement + initstr($a['OrigineCreation'], 2 ) . // @todo : aberrant 2 cas + // 14 (9) : Facultatif TYPEXPLOIT Type d'exploitation + initstr($a['TypeExploitation'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif LIEUACT Lieu de l'activité de l'établissement + initstr($a['LIEUACT'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ACTISURF Type de magasin + initstr($a['ACTISURF'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif PRODPART Participation particulière à la production de l'établissement + initstr($a['PRODPART'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ARRONET Arrondissement de l'établissement + initstr($b['insARRONET'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif CTONET Canton + initstr($b['insCTONET'], 3 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TCD Tranche de commune détaillée + initstr($b['insTCD'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ZEMET Zone d'emploi + initstr($b['insZEMET'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DU Département de l'unité urbaine de localisation + initstr($b['insDU'], 2 ) . + // 14 (9) : Facultatif TU Taille de l'unité urbaine + initstr($b['insTU'], 1 ) . + // 14 (9) : Facultatif UU Numéro de l'untié urbaine + initstr($b['insUU'], 2 ) . + // 14 (9) : Facultatif DCRET Date de création de l'établissement + initstr(str_replace('-', '', $a['DateCreaEt']), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire APE_ETAB Code activité dans la NAF rév2 de l'établissement + initstr($a['NafEtab'], 5 ) . + // 14 (9) : Facultatif NACE_ETAB Code activité NACE de l'établissement + initstr($a['NaceEtab'], 5 ) . + // 14 (9) : Facultatif DAPET Année de validité de l'activité principale de l'établissement + initstr(0, 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif EFF_ET Effectif de l'établissement + initstr($a['EffectifEtab'], 7 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TEFF_ET Tranche d'effectif de l'établissement + initstr($a['EffEtTr'], 2 ) . + // 14 (9) : Facultatif DEFET Année de mise à jour de l'effectif établissement + initstr($a['AnneeEffEt'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif MODET Modalité de l'activité pricipale de l'établissement + initstr('', 1 ) . + // 14 (9) : Facultatif EXPLET Etablissement exploitant tout ou partie des moyens de production + initstr($a['EXPLET'], 1 ) . + // 14 (9) : Facultatif RPET Région de localisation de l'établissement + initstr($b['insRPET'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DREACTET Date de réactivation de l'établissement + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DATEFERET Date de fermeture de l'établissement + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif EAEANT Année de validité des rubriques de niveau Etab provenant des EAE* + initstr($b['insEAEANT'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif EAEAPET Activité principale de l'établissement issue des EAE + initstr($b['insEAEAPET'], 5 ) . + // 14 (9) : Facultatif EAESEC1T Activité secondaire de l'établissement issue des EAE + initstr($b['insEAESEC1T'], 5 ) . + // 14 (9) : Facultatif EAESEC2T Autre activité secondaire de l'établissement issue des EAE + initstr($b['insEAESEC2T'], 5 ) . + // 14 (9) : Facultatif DCREN Date de création de l'entreprise + initstr(str_replace('-','',$a['DateCreaEn']), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire APE_ENT Code activité dans la NAF rév2 de l'entreprise + initstr($a['NafEnt'], 5 ) . + // 14 (9) : Facultatif NACE_ENT Code activité NACE de l'entreprise + initstr($a['NaceEnt'], 5 ) . + // 14 (9) : Facultatif DAPEN Année de validité de l'activité principale de l'entreprise + initstr(0, 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif EFF_ENT Effectif de l'entreprise + initstr($a['Effectif'], 7 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TEFF_ENT Tranche d'effectif de l'entreprise + initstr($a['EffEnTr'], 2 ) . + // 14 (9) : Facultatif DEFEN Année de mise à jour de l'effectif entreprise + initstr($a['AnneeEffEn'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif MODEN Modalité de l'activité pricipale de l'entreprise + initstr($a['MODEN'], 1 ) . + // 14 (9) : Facultatif EXPLEN Entreprise exploitant tout ou partie des moyens de production + initstr($a['EXPLEN'], 1 ) . + // 14 (9) : Facultatif RPEN Région de localisation du siège de l'entreprise + initstr($b['insRPEN'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DREACTEN Date de réactivation de l'entreprise + initstr(str_replace('-','',$ev_DREACTEN), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DATEFEREN Date de fermeture de l'entreprise + initstr(str_replace('-','',$ev_DATEFEREN), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DATEIMMAT Date d'immatriculation de l'entreprise au RCS + initstr(str_replace('-','',$a['dateImmat']),8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif DATERAD Date de radiation de l'entreprise du RCS + initstr(str_replace('-','',$a['dateRad']), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif CAPITAL Montant du capital de l'entreprise + initstr($a['Capital'], 15 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif CAPITALTYPE Type de capital + initstr($a['CapitalType'], 1 ) . + // 14 (9) : Facultatif CAPITALDEV Devise du capital + initstr($a['CapitalDev'], 3 ) . + // P 1109 - L 4 : Obligatoire, CJ Catégorie Juridique de l'entreprise + initstr($a['FJ'], 4 , '0', ALIGN_RIGHT) . // @todo non definie + // 14 (9) : Facultatif CIVILITE Civilité de l'entreprise si Personne Physique + initstr($a['Civilite'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif NBETAB Nombre d'établissements actifs de l'entreprise + initstr($a['NbEtab'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TCA Tranche de chiffre d'affaire + initstr($a['TrancheCA'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif TCAEXP Tranche de chiffre d'affaire à l'export + initstr($a['TrancheCAexp'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif APRM Activité principale au registre des métiers + initstr($a['APRM'], 6 ) . + // 14 (9) : Facultatif MONOREG Mono-régionalité de l'entreprise + initstr($a['MONOREG'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif REGIMP Principale région d'implantation de l'entreprise + initstr($a['REGIMP'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif MONOACT Mono-activité de l'entreprise + initstr($a['MONOACT'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif NICSIEGE Nic de l'établissement siège + initstr(substr($a['SiretSiege'],-5), 5 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif RECME Répertoire des Entreprises Contrôlées Majoritairement par l'État + initstr($a['RECME'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre + initstr($ev_SIRETLIE, 14 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif SIRETLIETYPE Type de sitet lié + initstr($ev_SIRETLIETYPE, 1) . + // 1151 (5) : Facultatif NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert) + initstr($a['AutreSiret']['pre']['nic'], 5 , '0', ALIGN_RIGHT) . // @todo non definie + // 14 (9) : Facultatif NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert) + initstr($a['AutreSiret']['suc']['nic'], 5 , '0', ALIGN_RIGHT) . // @todo non definie + // 14 (9) : Facultatif insDESTINAT Destination Insee + initstr($ev_DESTINAT, 2 ) . + // 14 (9) : Facultatif insDEPCOMEN Code commune Insee du siège de l'entreprise + initstr($b['insDEPCOMEN'], 5 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMNICSIEGE Indicateur de MAJ du NIC SIEGE + initstr($ev_MNICSIEGE, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMNOMEN Indicateur de MAJ de la Raison Sociale + initstr($ev_MNOMEN, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMCJ Indicateur de MAJ de la Forme Juridique + initstr($ev_MCJ, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMAPEN Indicateur de MAJ du NAF entreprise + initstr($ev_MAPEN, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE + initstr($ev_MENSEIGNE, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMAPET Indicateur de MAJ du NAF établissement + initstr($ev_MAPET, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement + initstr($ev_MADRESSE, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMAUXILT Indicateur de MAJ de l'AUXILIARITE + initstr($ev_MAUXILT, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMSIGLE Indicateur de MAJ du SIGLE + initstr($ev_MSIGLE, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep + initstr($ev_MEXPLEN, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab + initstr($ev_MEXPLET, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif ADR_RNVP Type de Prestation RNVP si RNVP + initstr($codeRnvp, 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif L1_nomen Ligne 1 : Nom de l'entreprise + initstr($L1rnvp, 38 ) . + // 14 (9) : Facultatif L2_COMP Ligne 2 : Complément de nom + initstr($L2rnvp, 38 ) . + // 14 (9) : Facultatif L3_CADR Ligne 3 : Complément d'adresse + initstr($L3rnvp, 38 ) . + // 14 (9) : Facultatif L4_VOIE Ligne 4 : Adresse + initstr($L4rnvp, 38 ) . + // 14 (9) : Facultatif L5_DISP Ligne 5 : Distribution spéciale + initstr($L5rnvp, 38 ) . + // 14 (9) : Facultatif L6_POST Ligne 6 : Code Postal, commune, etc.. + initstr($L6rnvp, 38 ) . + initstr($L7rnvp, 38 ) . + // 14 (9) : Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE* + initstr($b['insEAEANN'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE + initstr($b['insEAEAPEN'], 5 ) . + // 14 (9) : Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE + initstr($b['insEAESEC1N'], 5 ) . + // 14 (9) : Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE + initstr($b['insEAESEC2N'], 5 ) . + // 14 (9) : Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE + initstr($b['insEAESEC3N'], 5 ) . + // 14 (9) : Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE + initstr($b['insEAESEC4N'], 5 ) . + // P 1475 - L 12 : Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984) + initstr($a['GeoLat'], 12 , ' ', ALIGN_RIGHT) . // @todo : format + // 14 (9) : Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984) + initstr($a['GeoLon'], 12 , ' ', ALIGN_RIGHT) . // @todo : format + // P 1499 - L 1 : Facultatif GPSP Niveau de précision du géocodage + initstr($a['GeoPrecis'], 1 , '0', ALIGN_RIGHT) . // @todo : format + // 14 (9) : Facultatif ZUS Identifiant de la Zone Urbaine Sensible + initstr($a['GeoInfos']['NZUS'], 10 ) . + // 14 (9) : Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine + initstr($a['GeoInfos']['NZRU'], 10 ) . + // 14 (9) : Facultatif ZFU Identifiant de la Zone Franche Urbaine + initstr($a['GeoInfos']['NZFU'], 10 ) . + // 14 (9) : Facultatif CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social + initstr($a['GeoInfos']['NCUCS'],10 ) . + // 14 (9) : Facultatif AFR Identifiant de la Zone AFR + initstr($a['GeoInfos']['NAFR'], 10 ) . + // 14 (9) : Facultatif ZRR Identifiant de la ZRR + initstr($a['GeoInfos']['NZRR'], 10 ) . + // P 160 - L 15 Facultatif TVA Numéro de TVA Intracommunataire + initstr($a['TvaNumero'], 15 ) . + // P 1575 - L 1 : Facultatif TVAVALIDE Numéro de TVA validé + initstr($a['TvaAttribue'], 1 , '0', ALIGN_RIGHT) . + // P 1576 - L 1 : Facultatif ANCIENSIEGE Ancien siège + initstr($a['AncienSiege'], 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse + initstr($a['Isin'], 12 ) . + // 14 (9) : Facultatif PPDIR1NOM Nom du principal dirigeant + initstr($a['dir1Nom'], 40 ) . + + // 14 (9) : Facultatif PPDIR1PRENOM Prénom du principal dirigeant + initstr(preg_replace('/,?\s.*$/','',$a['dir1Prenom']), 30 ) . + // 14 (9) : Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant + initstr($a['dir1NomUsage'], 40 ) . + // 14 (9) : Facultatif PPDIR1DNAISS Date de naissance + initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT). + // 14 (9) : Facultatif PPDIR1LNAISS Lieu de Naissance + initstr($a['dir1LieuNaiss'], 35 ) . + // P 1742 - L 4 : Facultatif PPDIR1FONC Code Fonction + initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // @todo : Pas les mêmes code - correction dans lib + // 14 (9) : Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant + initstr(str_replace('-', '', $a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . + + // 14 (9) : Facultatif PPDIR2NOM Nom du seconde principal dirigeant + initstr($a['dir2Nom'], 40 ) . + // 14 (9) : Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant + initstr(preg_replace('/,?\s.*$/', '', $a['dir2Prenom']), 30 ) . + // 14 (9) : Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant + initstr($a['dir2NomUsage'], 40 ) . + // 14 (9) : Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant + initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT). + // 14 (9) : Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant + initstr($a['dir2LieuNaiss'], 35 ) . + // 14 (9) : Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant + initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant + initstr(str_replace('-','', $a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif BILANCLOT Date de dernière clôture de bilan disponible + initstr(str_replace('-','', $a['bilanDate']), 8 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif BILANDUREE Durée du dernier exercice disponible + initstr($a['bilanMois'], 2 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible + initstr($tcaSEDmt, 15 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif BILANRES Résultat au dernier bilan disponible + initstr($a['bilanHN'], 15 , '0', ALIGN_RIGHT) . + // 14 (9) : Tranche de CA SED + initstr($tcaSED, 1 ) . + // 14 (9) : Type de tranche de CA : (R)éel, (I)nconnu ou (E)stimé + initstr($tcaSEDtype, 1 ) . + // 14 (9) : Année du CA + initstr($tcaSEDannee, 4 ) . + // 14 (9) : PPDIR1 Genre + initstr($a['dir1Genre'], 1 ) . // @todo : De temps en temps non délivrés + // 14 (9) : PPDIR2 Genre + initstr($a['dir2Genre'], 1 ) . // @todo : De temps en temps non délivrés + // 14 (9) : Indicateur du champ de publipostage + initstr($a['IND_PUBLIPO']*1, 1 ) . + // 14 (9) : Facultatif FILLER1 Zone libre + initstr(' ', 32 ) ; + + /* + AnneeTCA + CapitalNbActions + CapitalMtActions + */ + // --- Ecriture ligne 200 + if ($opts->debug && mb_strlen($str)>LONGUEUR_LIGNE_SORTIE) { + echo date('Y-m-d H:i:s')." - Ligne supérieur à LONGUEUR MAX"; + } + file_put_contents($filepath, initstr($str,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); + $nbLignes++; + $nbLignes200++; + + $mBil=new Metier_Partenaires_MBilans($siren); + $tabBilans = $mBil->listeBilans(); + $iBil=0; + if ($OptionNbBilansMax>0) { + foreach ($tabBilans as $idxBilan=>$derBilan) { + $iBil++; + $t5=microtime(1); + $p = $mBil->getBilan(WDate::dateT('Ymd','d/m/Y',$derBilan['dateExercice']), $derBilan['typeBilan']); + $t6=microtime(1); + $tTime['Bilan']+=$t6-$t5; + + //print_r($p); + if ($p['CONSOLIDE']=='S') $numLiasse='2033'; + else $numLiasse='2050'; + $unite=strtoupper($p['MONNAIE_LIV_UNITE']); + if ($unite=='') $unite='U'; + $nbLignesBil++; + // 14 (9) : Obligatoire CODE_ENTETE Ligne de description structurée de l'identité + $strIni = initstr($OptionTypeLigneBilan, 3) . + // 14 (9) : Obligatoire ID Numéro unique d'identification interne d'un établissement S&D + initstr($a['SourceId'], 10, '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire SIREN Siren de l'entreprise + initstr($siren, 9, '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire NIC Nic de l'établissement + initstr($nic, 5, '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire SOURCE Source de la fiche d'identité + initstr($a['Source'], 3, '0', ALIGN_RIGHT) . + // 14 (9) : Obligatoire SIRETVALIDE Siren/siret valide + initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . + // 14 (9) : Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés + initstr($a['numRC'], 10 ) . + // 14 (9) : Facultatif TRIBUNAL Identifiant du Tribunal + initstr($a['Tribunal'], 6 ) . + // DATEMAJ Date de la dernière mise à jour du bilan dans la base S&D Format AAAAMMJJ + initstr(str_replace('-','',$p['DATE_FRAICHE_BILAN']), 8, '0', ALIGN_RIGHT) . + // MILLESIME Année du bilan + initstr(substr($p['DATE_FRAICHE_BILAN'],0,4), 4, '0', ALIGN_RIGHT) . + // BILAN_DATE Date de clôture du bilan Format AAAAMMJJ + initstr(str_replace('-','',$p['DATE_CLOTURE']), 8, '0', ALIGN_RIGHT) . + // BILAN_DUREE Durée de l'exercice en mois + initstr($p['DUREE_MOIS'], 2, '0', ALIGN_RIGHT) . + // BILAN_DATEP Date de clôture du bilan précédent Format AAAAMMJJ + initstr(str_replace('-','',$p['DATE_CLOTURE_PRE']), 8, '0', ALIGN_RIGHT) . + // BILAN_DUREEP Durée de l'exercice précédent en mois + initstr($p['DUREE_MOIS_PRE'], 2, '0', ALIGN_RIGHT) . + // BILAN_LIASSE Numéro de la première liasse du bilan 2033,2050 + initstr($numLiasse,4) . + // BILAN_TYPE Type de bilan S=Réel Normal Simplifié, C=Consolidé, N=Réel Normal + initstr($p['CONSOLIDE'], 1) . + // BILAN_MONNAIE Code devise de livraison selon la norme ISO 4217 (3 lettres) + initstr($p['MONNAIE'], 3) . + // BILAN_MONNAIEO Code devise d'origine du bilan selon la norme ISO 4217* + initstr($p['MONNAIE_ORI'], 3) . + // BILAN_UNITE Unité du bilan livré U=en unité de devise, K=en milliers, M=en millions + initstr($unite, 1); + + unset($p['SIREN']); + unset($p['SOURCE']); + unset($p['devise']); + unset($p['DATE_FRAICHE_BILAN']); + unset($p['DATE_CLOTURE']); + unset($p['DATE_CLOTURE_PRE']); + unset($p['DUREE_MOIS']); + unset($p['DUREE_MOIS_PRE']); + unset($p['MONNAIE']); + unset($p['CONSOLIDE']); + unset($p['MONNAIE_ORI']); + unset($p['MONNAIE_LIV_UNITE']); + $strIni.=initstr(count($p), 4, '0', ALIGN_RIGHT); // BILAN_NBPOSTES Nombre de postes livrés + $nbP=0; + $strP=''; + if ($OptionTypeLigneBilan==400) { + foreach ($p as $code=>$valeur) { + $nbP++; + if ($valeur>=0) $signe='+'; + else $signe='-'; + $strP.= initstr($code, 4).$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); + if($nbP<76) continue; + + // --- Ecriture ligne 400 + file_put_contents($filepath, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); + $nbLignes++; + $nbLignesBil++; + $nbP=0;$strP=''; + } + if($nbP<76) { // Ecriture de la dernière ligne sauf s'il y a dejà 76 postes + // --- Ecriture ligne 400 + file_put_contents($filepath, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); + $nbLignes++; + $nbLignesBil++; + } + } else { + $uniteMultiple=1; + switch (strtoupper($unite)) { + case 'K': $uniteMultiple=1000; break; + case 'M': $uniteMultiple=1000000; break; + } + if ($p['CONSOLIDE']=='S') $tabPostes=$iBilan->bilanSimplifie2Normal($p); + else $tabPostes=$p; + + // Chiffre d'affaires - Poste FL au format 2050 + $strP.= @exporteRatio($p['FL']); + // Chiffre d'affaires Export - Poste FK + $strP.= @exporteRatio($p['FK']); + // Valeur Ajoutée - R130 = FL + FM+FN - (FS+FU) - (FT+FV) - (FW-HP-HQ) + $va=$p['FL'] + $p['FM'] + $p['FN'] - ($p['FS'] + $p['FU']) - ($p['FT'] + $p['FV']) - ($p['FW']-$p['HP']-$p['HQ']); + $strP.= @exporteRatio($va); + // Masse salariale - R132 = FY + FZ + $ms=$p['FY'] + $p['FZ']; + $strP.= @exporteRatio($ms); + // EBE - R140 = R130-R132 - FX + FO + $strP.= @exporteRatio($va-$ms - $p['FX'] + $p['FO']); + // Personnel extérieur à l'entreprise, Intérim = Poste YU + $strP.= @exporteRatio($p['YU']); + // Sous-traitance + $strP.= @exporteRatio($p['YT']); + // Effectif + $strP.= @exporteRatio($p['YP']); + // Capital - Poste DA + $strP.= @exporteRatio($p['DA']); + // Montant des Immo. Corp. Terrains Brut Poste AN + $strP.= @exporteRatio($p['AN']); + // Montant des Immo. Corp. Constructions Poste AP + $strP.= @exporteRatio($p['AP']); + // Montant des Installations Techniques, matériel et outillage industriels Poste AR + $strP.= @exporteRatio($p['AR']); + // Montant des Immo. Corp. Brut =AN+AP+AR+AT+AV+AX + $strP.= @exporteRatio($p['AN'] + $p['AP'] + $p['AR'] + $p['AT'] + $p['AV'] + $p['AX']); + // Montant des Immo. Corp. Net =AN-AO + AP-AQ + AR-AS + AT-AU + AV-AW + AX-AY + $strP.= @exporteRatio($p['AN']-$p['AO'] + $p['AP']-$p['AQ'] + $p['AR']-$p['AS'] + $p['AT']-$p['AU'] + $p['AV']-$p['AW'] + $p['AX']-$p['AY']); + // Montant des Immo. Incorp. Brut =AB+AD+AF+AH+AJ+AL + $strP.= @exporteRatio($p['AB'] + $p['AD'] + $p['AF'] + $p['AH'] + $p['AJ'] + $p['AL']); + // Montant des Immo. Incorp. Net =AB-AC + AD-AE + AF-AG + AH-AI + AJ-AK + AL-AM + $strP.= @exporteRatio($p['AB']-$p['AC'] + $p['AD']-$p['AE'] + $p['AF']-$p['AG'] + $p['AH']-$p['AI'] + $p['AJ']-$p['AK'] + $p['AL']-$p['AM']); + // Montant des Taxe professionnelle Poste YW + $strP.= @exporteRatio($p['YW']); + + // --- Ecriture ligne + file_put_contents($filepath, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND); + $nbLignes++; + $nbLignesBil++; + $strP=''; + } + if ($iBil==$OptionNbBilansMax) break; + } + } + + if (empty($opts->debug)) { + $suiviM->update(array( + 'unitIncrement' => $unit, 'unitExec' => date('YmdHis'), - ), 'id='.$suiviId); - } - echo date ('Y/m/d - H:i:s')." - Fin ligne $unit/$nbEtab\n"; - } - - // --- Fin de ligne du fichier - $nbLignes++; - $dateFin=date('YmdHis'); - $str= initstr('999', 3, '0', ALIGN_RIGHT) . // Type de ligne - initstr($dateFin, 14) . // Date & Heure de fin génération du fichier - initstr($OptionClientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client - initstr($prestaId, 36) . // Identifiant Client - initstr($OptionTypePrestation, 32) . // Type de prestation - initstr($nbLignes, 10, '0', ALIGN_RIGHT) . // Nombre de lignes Total du fichier - ''; - - // Pas de fin de ligne sur la dernière ligne - file_put_contents($filepath, initstr($str,LONGUEUR_LIGNE_SORTIE), FILE_APPEND); - - $tabProduction[$prestaId]['dateFin']=$dateFin; - $duree=round(microtime(true)-$timeDeb,3); - $dureeD=floor($duree/86400); - $reste=$duree%86400; - $dureeH=floor($reste/3600); - $reste=$reste%3600; - $dureeM=floor($reste/60); - $dureeS=$reste%60; - - $tabProduction[$prestaId]['duree']=$duree.' secondes'; - if ($dureeD==0 && $dureeH==0) $tabProduction[$prestaId]['dureeLisible']="$dureeM m. $dureeS s."; - elseif ($dureeD==0) $tabProduction[$prestaId]['dureeLisible']="$dureeH h. $dureeM m. $dureeS s."; - else $tabProduction[$prestaId]['dureeLisible']="$dureeD j. $dureeH h. $dureeM m. $dureeS s."; - $tabProduction[$prestaId]['nbLignes']=$nbLignes; - - echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Fichier client terminé.\n"; - - // --- Envoi du fichier produit par mail - if (!empty($OptionMailTo)) { - $OptionMailTo.= ','; - } - $OptionMailTo.= 'suivi@scores-decisions.com'; - - if ($opts->nomail === null && !empty($OptionMailTo)) { - $tabAttached = array($filepath); - $messageInfo="Bonjour, - - Veuillez trouver le fichier d'établissements Scores & Décisions relatifs à votre abonnement. - - Bien Cordialement, - Le service Support. - - - ATTENTION : Cet email est un message automatique. Merci de ne pas y répondre. Pour toute question nous vous invitons à contacter notre support à l'adresse support@scores-decisions.com. - - --- - - SCORES & DECISIONS - Service support - 1, rue de Clairefontaine - 78120 RAMBOUILLET - tél : 33 (0)1 75 43 80 10 - fax : 33 (0)1 75 43 85 74 - support@scores-decisions.com - http://www.scores-decisions.com/ - Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises - - Pensez à l'environnement avant d'imprimer ce message ! - Save paper - think before you print"; - - - if(sendMail('production@scores-decisions.com', $OptionMailTo, "Diffusion A6CMO S&D", $messageInfo, '', $tabAttached)) { - echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Fichier envoyé à ".$OptionMailTo."\n"; - } else { - echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Erreur lors de l'envoi du fichier à ".$OptionMailTo."\n"; - } - } else { - - } - - if (empty($opts->debug)) { - $suiviparamM = new Application_Model_Sdv1PrestaOutDetail(); - $suiviparamM->insert(array( - 'execId' => $suiviId, - 'code' => $prestaId, - 'name' => 'fichier', + ), 'id='.$suiviId); + } + echo date ('Y/m/d - H:i:s')." - Fin ligne $unit/$nbEtab\n"; + } + + // --- Fin de ligne du fichier + $nbLignes++; + $dateFin=date('YmdHis'); + $str= initstr('999', 3, '0', ALIGN_RIGHT) . // Type de ligne + initstr($dateFin, 14) . // Date & Heure de fin génération du fichier + initstr($OptionClientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client + initstr($prestaId, 36) . // Identifiant Client + initstr($OptionTypePrestation, 32) . // Type de prestation + initstr($nbLignes, 10, '0', ALIGN_RIGHT) . // Nombre de lignes Total du fichier + ''; + + // Pas de fin de ligne sur la dernière ligne + file_put_contents($filepath, initstr($str,LONGUEUR_LIGNE_SORTIE), FILE_APPEND); + + $tabProduction[$prestaId]['dateFin']=$dateFin; + $duree=round(microtime(true)-$timeDeb,3); + $dureeD=floor($duree/86400); + $reste=$duree%86400; + $dureeH=floor($reste/3600); + $reste=$reste%3600; + $dureeM=floor($reste/60); + $dureeS=$reste%60; + + $tabProduction[$prestaId]['duree']=$duree.' secondes'; + if ($dureeD==0 && $dureeH==0) $tabProduction[$prestaId]['dureeLisible']="$dureeM m. $dureeS s."; + elseif ($dureeD==0) $tabProduction[$prestaId]['dureeLisible']="$dureeH h. $dureeM m. $dureeS s."; + else $tabProduction[$prestaId]['dureeLisible']="$dureeD j. $dureeH h. $dureeM m. $dureeS s."; + $tabProduction[$prestaId]['nbLignes']=$nbLignes; + + echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Fichier client terminé.\n"; + + // --- Envoi du fichier produit par mail + if (!empty($OptionMailTo)) { + $OptionMailTo.= ','; + } + $OptionMailTo.= 'suivi@scores-decisions.com'; + + if ($opts->nomail === null && !empty($OptionMailTo)) { + $tabAttached = array($filepath); + $messageInfo="Bonjour, + + Veuillez trouver le fichier d'établissements Scores & Décisions relatifs à votre abonnement. + + Bien Cordialement, + Le service Support. + + + ATTENTION : Cet email est un message automatique. Merci de ne pas y répondre. Pour toute question nous vous invitons à contacter notre support à l'adresse support@scores-decisions.com. + + --- + + SCORES & DECISIONS + Service support + 1, rue de Clairefontaine - 78120 RAMBOUILLET + tél : 33 (0)1 75 43 80 10 + fax : 33 (0)1 75 43 85 74 + support@scores-decisions.com + http://www.scores-decisions.com/ + Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + + Pensez à l'environnement avant d'imprimer ce message ! + Save paper - think before you print"; + + + if(sendMail('production@scores-decisions.com', $OptionMailTo, "Diffusion A6CMO S&D", $messageInfo, '', $tabAttached)) { + echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Fichier envoyé à ".$OptionMailTo."\n"; + } else { + echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Erreur lors de l'envoi du fichier à ".$OptionMailTo."\n"; + } + } else { + + } + + if (empty($opts->debug)) { + $suiviparamM = new Application_Model_Sdv1PrestaOutDetail(); + $suiviparamM->insert(array( + 'execId' => $suiviId, + 'code' => $prestaId, + 'name' => 'fichier', 'value' => $file, - )); - - $suiviM->update(array('dateEnd' => date('YmdHis')), 'id='.$suiviId); - } - - echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Fin.\n"; - -} // --- Fin boucle presta - -if ($opts->stock) $strStock="des stocks"; -else $strStock="des fichiers hebdos"; -$messageFinObj="FIN de la diffusion $strStock A6CMO"; -$messageFinMsg=print_r($tabProduction, true); -$messageFinMsg.=print_r($tTime, true); -if ($opts->nomail === null) { - sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', $messageFinObj, $messageFinMsg); -} - -function exporteRatio($valeur) { - $signe='+'; - if($valeur<0) $signe='-'; - return ''.$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); -} - + )); + + $suiviM->update(array('dateEnd' => date('YmdHis')), 'id='.$suiviId); + } + + echo date ('Y/m/d - H:i:s')." - Prestation $prestaId, Client $OptionNomClient : Fin.\n"; + +} // --- Fin boucle presta + +if ($opts->stock) $strStock="des stocks"; +else $strStock="des fichiers hebdos"; +$messageFinObj="FIN de la diffusion $strStock A6CMO"; +$messageFinMsg=print_r($tabProduction, true); +$messageFinMsg.=print_r($tTime, true); +if ($opts->nomail === null) { + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', $messageFinObj, $messageFinMsg); +} + +function exporteRatio($valeur) { + $signe='+'; + if($valeur<0) $signe='-'; + return ''.$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); +} diff --git a/scripts/sources/Dila.php b/bin/sourceDila.php similarity index 98% rename from scripts/sources/Dila.php rename to bin/sourceDila.php index ff0488b3..e7a6b366 100644 --- a/scripts/sources/Dila.php +++ b/bin/sourceDila.php @@ -7,14 +7,14 @@ error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED); // --- Define path to application directory defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../../application')); + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); // --- Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // --- Composer autoload -require_once realpath(__DIR__ . '/../../vendor/autoload.php'); +require_once realpath(__DIR__ . '/../vendor/autoload.php'); // --- Create application, bootstrap, and run $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); diff --git a/scripts/getInpiDecisions.php b/bin/sourceInpiDecisions.php similarity index 97% rename from scripts/getInpiDecisions.php rename to bin/sourceInpiDecisions.php index 6ba9f8a0..3ce7d844 100644 --- a/scripts/getInpiDecisions.php +++ b/bin/sourceInpiDecisions.php @@ -1,406 +1,406 @@ -> /home/scores/batch/shared/sources/log/getInpiDecisions.log + * crontab + * 30 9 * * * /home/scores/batch/scripts/getInpiDecisions.php >> /home/scores/batch/shared/sources/log/getInpiDecisions.log * 00 19 * * * /home/scores/batch/getInpiDecisions.php >> /home/scores/batch/shared/sources/log/getInpiDecisionsSoir.log */ -// --- Define path to application directory -defined('APPLICATION_PATH') - || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); - -// --- Define application environment -defined('APPLICATION_ENV') - || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); - -// --- Composer autoload -require_once realpath(__DIR__ . '/../vendor/autoload.php'); - -// --- Create application, bootstrap, and run -$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); - -$c = new Zend_Config($application->getOptions()); -Zend_Registry::set('config', $c); -$db = Zend_Db::factory($c->profil->db->metier); -Zend_Db_Table::setDefaultAdapter($db); - +// --- Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(__DIR__ . '/../application')); + +// --- Define application environment +defined('APPLICATION_ENV') + || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); + +// --- Composer autoload +require_once realpath(__DIR__ . '/../vendor/autoload.php'); + +// --- Create application, bootstrap, and run +$application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); + +$c = new Zend_Config($application->getOptions()); +Zend_Registry::set('config', $c); +$db = Zend_Db::factory($c->profil->db->metier); +Zend_Db_Table::setDefaultAdapter($db); + require_once APPLICATION_PATH.'/configs/config.php'; require_once 'framework/fwk.php'; require_once 'framework/common/chiffres.php'; require_once 'framework/common/dates.php'; -require_once 'framework/mail/sendMail.php'; - -$table='jo.annonces'; - -function wsLog($service, $siret='', $ref='') {} - -define('RNCS_IMR_FTP_HOST', '194.5.119.252'); -define('RNCS_IMR_FTP_LOGIN', 'score'); -define('RNCS_IMR_FTP_PASS', '1eUauTJZ'); -define('RNCS_IMR_FTP_DIR', '/var/home_ftp/score/Send/'); -define('RNCS_IMR_FTP_LOCALDIR', '/home/scores/batch/shared/sources/rncs/extelia/'); -define('RNCS_IMR_BACKUP_DIR', '/home/scores/batch/shared/sources/rncs/imr/'); - -$strInfoScript='Usage : '.basename($argv[0]). "