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(dirname(__FILE__) . '/../application')); // --- Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // --- Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); // --- Use classmap autoloader - useful with opcode and realpath cache require_once 'Zend/Loader/AutoloaderFactory.php'; require_once 'Zend/Loader/ClassMapAutoloader.php'; Zend_Loader_AutoloaderFactory::factory(array( 'Zend_Loader_ClassMapAutoloader' => array( __DIR__ . '/../library/autoload_classmap.php', ), 'Zend_Loader_StandardAutoloader' => array( 'prefixes' => array( 'Zend' => __DIR__ . '/../library/Zend', 'Application' => __DIR__ . '/../library/Application', 'Scores' => __DIR__ . '/../library/Scores', 'SdMetier' => __DIR__ . '/../library/SdMetier', 'Metier' => __DIR__ . '/../library/Metier', ), 'fallback_autoloader' => true ) )); // ---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'; require_once 'Metier/bodacc/classMBodacc.php'; require_once 'Metier/insee/classMInsee.php'; //require_once 'Metier/conversion/bilAltares.php'; require_once 'Metier/partenaires/classMRnvp.php'; $c = new Zend_Config($application->getOptions()); $db = Zend_Db::factory($c->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=?', 'a6cmo'); $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()->where('actif=1'); $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 ? // Fréquence Mensuelle : le 1er lundi du mois if ($OptionFreqenvois == 'M') { if ($dateNow->get(Zend_Date::DAY_SHORT) < 8 && $dateNow->getWeekday() == 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->getWeekday() == '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->getWeekday(), 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 MInsee($iDb); $iBodacc = new MBodacc($iDb); $iRnvp = new MRnvp(); $dateDeb = date('YmdHis'); $file = $OptionTypePrestation.'_'.$prestaId.'_'.$dateDeb.'.txt'; $filepath = $c->profil->path->storage . '/clients/A6CMO/'.$file; if (empty($opts->debug)) { $suiviM = new Application_Model_Sdv1PrestaOut(); $suiviId = $suiviM->insert(array( '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 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', '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); }