batch/scripts/diffusionEntrepA6cmo.php

1214 lines
61 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Diffusion Insee Spécifique A6CMO
* - Executer tous les lundi
* - Lire la tables des prestations de type A6CMO, récupérer les paramètres et le numéro d'incrément de fichier
*
* Options d'execution à paramètrer dans la base
* nomClient => 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';
require_once 'Metier/bodacc/classMBodacc.php';
require_once 'Metier/insee/classMInsee.php';
//require_once 'Metier/conversion/bilAltares.php';
require_once 'Metier/partenaires/classMRnvp.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) {
$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',
'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 = $appconfig->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);
}