batch/bin/prestaA6cmoEntrep.php
2016-09-30 11:46:43 +02:00

1210 lines
66 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
$displayUsage = false;
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) {
$displayUsage = true;
}
// --- Aide / Options
if (count($opts->getOptions())==0 || isset($opts->help)) {
$displayUsage = true;
}
// --- Usage
if ($displayUsage) {
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';
$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 = DateTime::createFromFormat('Y-m-d H:i:s', $execResult->dateEnd);
}
$dateNow = new DateTime();
$dateNow->setTime(0, 0, 0);
// --- Surcharge date
if (strlen($opts->date) == 8) {
$dateLastExec = DateTime::createFromFormat('Ymd', $opts->date);
} elseif (strlen($opts->date) == 14) {
$dateLastExec = DateTime::createFromFormat('YmdHis', $opts->date);
}
$dateLastExec->setTime(0,0,0);
// --- Livraison d'un stock
if ($opts->stock) {
}
// --- Suivi
elseif (!$opts->force) {
// --- Est ce que la prestation doit s'executer... freqenvois ?
if ($dateLastExec !== false && $dateNow == $dateLastExec) {
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->format('j') < 8 && $dateNow->format('N') == 1) {
if ($dateLastExec === false) {
$dateLastExec = $dateNow;
$dateLastExec->sub(new DateInterval('P31D'));
}
} 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->format('N') == 1) {
if ($dateLastExec === false) {
$dateLastExec = $dateNow;
$dateLastExec->sub(new DateInterval('P7D'));
}
} 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->format('j'), 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 Metier_Util_Db();
$iInsee = new Metier_Insee_MInsee($iDb);
$iBodacc = new Metier_Bodacc_MBodacc($iDb);
$iRnvp = new Metier_Partenaires_MRnvp();
$dateDeb = date('YmdHis');
$file = $OptionTypePrestation.'_'.$prestaId.'_'.$dateDeb.'.txt';
$filepath = $appconfig->profil->path->storage . '/clients/A6CMO/' . $file;
if (empty($opts->debug)) {
$suiviM = new Application_Model_Sdv1PrestaOut();
$suiviId = $suiviM->insert(array(
'code' => $prestaId,
'dateStart' => $dateDeb,
));
}
// --- Ligne d'entete
$str = Metier_Util_String::initstr('001', 3, '0', Metier_Util_String::ALIGN_RIGHT). // Type de ligne
Metier_Util_String::initstr($dateDeb, 14 ). // Date de génération du fichier
Metier_Util_String::initstr($OptionClientNumTourFichier, 10, '0', Metier_Util_String::ALIGN_RIGHT). // Numéro de tour du fichier pour le client
Metier_Util_String::initstr($prestaId, 36 ). // Identifiant Client
Metier_Util_String::initstr($OptionTypePrestation, 32 ). // Type de prestation
Metier_Util_String::initstr(VERSION_FICHIER_IDENTITE, 4 ). // Type de prestation
Metier_Util_String::initstr(FILLER, 1901 ). // FILLER
'';
// --- Ecriture fichier
$isWrite = file_put_contents($filepath, Metier_Util_String::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 = Metier_Util_String::initstr(200, 3) .
// 4 (10) : Obligatoire ID Numéro unique d'identification interne d'un établissement S&D
Metier_Util_String::initstr($a['SourceId'], 10 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire SIREN Siren de l'entreprise
Metier_Util_String::initstr($siren, 9 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (5) : Obligatoire NIC Nic de l'établissement
Metier_Util_String::initstr($nic, 5 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (3) : Obligatoire SOURCE Source de la fiche d'identité
Metier_Util_String::initstr($a['Source'], 3 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (1) : Obligatoire SIRETVALIDE Siren/siret valide
Metier_Util_String::initstr($iInsee->valideSiren($siren,$nic), 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (10) : Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés
Metier_Util_String::initstr($a['numRC'], 10 ) .
// 14 (6) : Facultatif TRIBUNAL Identifiant du Tribunal
Metier_Util_String::initstr($a['Tribunal'], 6 ) .
// 14 (9) : Obligatoire DATEMAJ Date de la dernière mise à jour dans la base S&D
Metier_Util_String::initstr(str_replace('-', '', $a['dateMajIdentite']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) . // @todo : Erreur date 20150730 vs 20150803 ?
// 14 (9) : Obligatoire ACTIF Établissement juridiquement actif
Metier_Util_String::initstr($a['Actif'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire ACTIFECO Établissement économiquement actif
Metier_Util_String::initstr($a['ActifEco'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire SITJUR Situation Juridique de l'entreprise
Metier_Util_String::initstr($a['SituationJuridique'], 2 ) .
// 14 (9) : Facultatif EVE Dernier événement Insee recensé
Metier_Util_String::initstr($ev_EVE, 3 ) .
// 14 (9) : Facultatif DATEVE Date du dernier événement Insee recensé
Metier_Util_String::initstr(str_replace('-','', $a['DateMajINSEE']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TYPETAB Type d'établissement concerné par l'événement
Metier_Util_String::initstr($ev_TYPETAB, 2 ) .
// 14 (9) : Obligatoire SIEGE Établissement siège, secondaire ou principal
Metier_Util_String::initstr($a['Siege'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire NOM Raison Sociale
Metier_Util_String::initstr($a['Nom'], 160 ) . // @todo : pas de raison sociale sur certaines entités
// 14 (9) : Facultatif NOMCOM Nom commercial
Metier_Util_String::initstr($a['NomCommercial'], 160 ) .
// 14 (9) : Facultatif ENSEIGNE Enseigne de l'établissement
Metier_Util_String::initstr($a['Enseigne'], 80 ) .
// 14 (9) : Facultatif SIGLE sigle de l'entreprise
Metier_Util_String::initstr($a['Sigle'], 40 ) .
// 14 (9) : Facultatif ADR_NUMVOIE Numéro dans la voie
Metier_Util_String::initstr($a['AdresseNum'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ADR_BTQ Indicateur de répétition (Bis, Ter, etc...)
Metier_Util_String::initstr($a['AdresseBtq'], 1 ) .
// 14 (9) : Facultatif ADR_TYPVOIE Type de voie
Metier_Util_String::initstr($a['AdresseVoie'], 4 ) .
// 14 (9) : Obligatoire ADR_LIBVOIE Libellé de la voie
Metier_Util_String::initstr($a['AdresseRue'], 32 ) .
// 14 (9) : Obligatoire ADR_LIBCOM Commune
Metier_Util_String::initstr($a['Ville'], 32 ) .
// 14 (9) : Obligatoire ADR_CP Code postal
Metier_Util_String::initstr($a['CP'], 5 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ADR_COMP Complément d'adresse
Metier_Util_String::initstr($a['Adresse2'], 38 ) .
// 14 (9) : Facultatif ADR_DISTSP Distribution spéciale
Metier_Util_String::initstr('', 38 ) .
// 14 (9) : Facultatif PAYS Pays
Metier_Util_String::initstr($a['Pays'], 38 ) .
// 14 (9) : Facultatif PAYSISO2 Code Pays au format ISO2
Metier_Util_String::initstr($a['PaysIso2'], 2 ) .
// 14 (9) : Obligatoire ADR_DEP Département de l'établissement
Metier_Util_String::initstr($a['Dept'], 2 ) .
// 14 (9) : Obligatoire ADR_COM Code commune de l'établissement
Metier_Util_String::initstr($a['codeCommune'], 3 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif CODEVOIE Code voie de l'établissement
Metier_Util_String::initstr(str_replace(' ', '', $a['Rivoli']), 5 ) .
// 14 (9) : Facultatif CODEIRIS Code Iris de l'établissement
Metier_Util_String::initstr($a['codIris'], 4 ) .
// 14 (9) : Facultatif CODEILOT Code Ilot de l'établissement
Metier_Util_String::initstr('', 5 ) .
// 14 (9) : Facultatif ADRESSEDOM Indicateur d'adresse de domiciliation
Metier_Util_String::initstr($a['AdresseDom'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TEL Numéro de téléphone
Metier_Util_String::initstr($a['Tel'], 15 ) . // @todo : Différence dans les téléphones ou absent
// 14 (9) : Facultatif FAX Numéro de télécopie
Metier_Util_String::initstr($a['Fax'], 15 ) .
// 14 (9) : Facultatif WEB Site Web
Metier_Util_String::initstr($a['Web'], 80 ) .
// 14 (9) : Facultatif MAIL Adresse Email de contact générique
Metier_Util_String::initstr($a['Mail'], 80 ) . // @todo : Absence email
// 14 (9) : Facultatif AUXILT Auxiliarité de l'activité de l'établissement
Metier_Util_String::initstr($a['Auxiliaire'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif SAISONAT Saisonnalité de l'établissement
Metier_Util_String::initstr($a['Saisonnalite'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ACTIVNAT Nature de l'activité de l'établissement
Metier_Util_String::initstr($a['NatureActivite'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// P 922 - L 2 : Facultatif ORIGINE Origine de la création de l'établissement
Metier_Util_String::initstr($a['OrigineCreation'], 2 ) . // @todo : aberrant 2 cas
// 14 (9) : Facultatif TYPEXPLOIT Type d'exploitation
Metier_Util_String::initstr($a['TypeExploitation'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif LIEUACT Lieu de l'activité de l'établissement
Metier_Util_String::initstr($a['LIEUACT'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ACTISURF Type de magasin
Metier_Util_String::initstr($a['ACTISURF'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif PRODPART Participation particulière à la production de l'établissement
Metier_Util_String::initstr($a['PRODPART'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ARRONET Arrondissement de l'établissement
Metier_Util_String::initstr($b['insARRONET'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif CTONET Canton
Metier_Util_String::initstr($b['insCTONET'], 3 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TCD Tranche de commune détaillée
Metier_Util_String::initstr($b['insTCD'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ZEMET Zone d'emploi
Metier_Util_String::initstr($b['insZEMET'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DU Département de l'unité urbaine de localisation
Metier_Util_String::initstr($b['insDU'], 2 ) .
// 14 (9) : Facultatif TU Taille de l'unité urbaine
Metier_Util_String::initstr($b['insTU'], 1 ) .
// 14 (9) : Facultatif UU Numéro de l'untié urbaine
Metier_Util_String::initstr($b['insUU'], 2 ) .
// 14 (9) : Facultatif DCRET Date de création de l'établissement
Metier_Util_String::initstr(str_replace('-', '', $a['DateCreaEt']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire APE_ETAB Code activité dans la NAF rév2 de l'établissement
Metier_Util_String::initstr($a['NafEtab'], 5 ) .
// 14 (9) : Facultatif NACE_ETAB Code activité NACE de l'établissement
Metier_Util_String::initstr($a['NaceEtab'], 5 ) .
// 14 (9) : Facultatif DAPET Année de validité de l'activité principale de l'établissement
Metier_Util_String::initstr(0, 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif EFF_ET Effectif de l'établissement
Metier_Util_String::initstr($a['EffectifEtab'], 7 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TEFF_ET Tranche d'effectif de l'établissement
Metier_Util_String::initstr($a['EffEtTr'], 2 ) .
// 14 (9) : Facultatif DEFET Année de mise à jour de l'effectif établissement
Metier_Util_String::initstr($a['AnneeEffEt'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif MODET Modalité de l'activité pricipale de l'établissement
Metier_Util_String::initstr('', 1 ) .
// 14 (9) : Facultatif EXPLET Etablissement exploitant tout ou partie des moyens de production
Metier_Util_String::initstr($a['EXPLET'], 1 ) .
// 14 (9) : Facultatif RPET Région de localisation de l'établissement
Metier_Util_String::initstr($b['insRPET'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DREACTET Date de réactivation de l'établissement
Metier_Util_String::initstr(str_replace('-','',0), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DATEFERET Date de fermeture de l'établissement
Metier_Util_String::initstr(str_replace('-','',0), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif EAEANT Année de validité des rubriques de niveau Etab provenant des EAE*
Metier_Util_String::initstr($b['insEAEANT'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif EAEAPET Activité principale de l'établissement issue des EAE
Metier_Util_String::initstr($b['insEAEAPET'], 5 ) .
// 14 (9) : Facultatif EAESEC1T Activité secondaire de l'établissement issue des EAE
Metier_Util_String::initstr($b['insEAESEC1T'], 5 ) .
// 14 (9) : Facultatif EAESEC2T Autre activité secondaire de l'établissement issue des EAE
Metier_Util_String::initstr($b['insEAESEC2T'], 5 ) .
// 14 (9) : Facultatif DCREN Date de création de l'entreprise
Metier_Util_String::initstr(str_replace('-','',$a['DateCreaEn']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire APE_ENT Code activité dans la NAF rév2 de l'entreprise
Metier_Util_String::initstr($a['NafEnt'], 5 ) .
// 14 (9) : Facultatif NACE_ENT Code activité NACE de l'entreprise
Metier_Util_String::initstr($a['NaceEnt'], 5 ) .
// 14 (9) : Facultatif DAPEN Année de validité de l'activité principale de l'entreprise
Metier_Util_String::initstr(0, 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif EFF_ENT Effectif de l'entreprise
Metier_Util_String::initstr($a['Effectif'], 7 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TEFF_ENT Tranche d'effectif de l'entreprise
Metier_Util_String::initstr($a['EffEnTr'], 2 ) .
// 14 (9) : Facultatif DEFEN Année de mise à jour de l'effectif entreprise
Metier_Util_String::initstr($a['AnneeEffEn'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif MODEN Modalité de l'activité pricipale de l'entreprise
Metier_Util_String::initstr($a['MODEN'], 1 ) .
// 14 (9) : Facultatif EXPLEN Entreprise exploitant tout ou partie des moyens de production
Metier_Util_String::initstr($a['EXPLEN'], 1 ) .
// 14 (9) : Facultatif RPEN Région de localisation du siège de l'entreprise
Metier_Util_String::initstr($b['insRPEN'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DREACTEN Date de réactivation de l'entreprise
Metier_Util_String::initstr(str_replace('-','',$ev_DREACTEN), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DATEFEREN Date de fermeture de l'entreprise
Metier_Util_String::initstr(str_replace('-','',$ev_DATEFEREN), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DATEIMMAT Date d'immatriculation de l'entreprise au RCS
Metier_Util_String::initstr(str_replace('-','',$a['dateImmat']),8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif DATERAD Date de radiation de l'entreprise du RCS
Metier_Util_String::initstr(str_replace('-','',$a['dateRad']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif CAPITAL Montant du capital de l'entreprise
Metier_Util_String::initstr($a['Capital'], 15 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif CAPITALTYPE Type de capital
Metier_Util_String::initstr($a['CapitalType'], 1 ) .
// 14 (9) : Facultatif CAPITALDEV Devise du capital
Metier_Util_String::initstr($a['CapitalDev'], 3 ) .
// P 1109 - L 4 : Obligatoire, CJ Catégorie Juridique de l'entreprise
Metier_Util_String::initstr($a['FJ'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) . // @todo non definie
// 14 (9) : Facultatif CIVILITE Civilité de l'entreprise si Personne Physique
Metier_Util_String::initstr($a['Civilite'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif NBETAB Nombre d'établissements actifs de l'entreprise
Metier_Util_String::initstr($a['NbEtab'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TCA Tranche de chiffre d'affaire
Metier_Util_String::initstr($a['TrancheCA'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif TCAEXP Tranche de chiffre d'affaire à l'export
Metier_Util_String::initstr($a['TrancheCAexp'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif APRM Activité principale au registre des métiers
Metier_Util_String::initstr($a['APRM'], 6 ) .
// 14 (9) : Facultatif MONOREG Mono-régionalité de l'entreprise
Metier_Util_String::initstr($a['MONOREG'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif REGIMP Principale région d'implantation de l'entreprise
Metier_Util_String::initstr($a['REGIMP'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif MONOACT Mono-activité de l'entreprise
Metier_Util_String::initstr($a['MONOACT'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif NICSIEGE Nic de l'établissement siège
Metier_Util_String::initstr(substr($a['SiretSiege'],-5), 5 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif RECME Répertoire des Entreprises Contrôlées Majoritairement par l'État
Metier_Util_String::initstr($a['RECME'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre
Metier_Util_String::initstr($ev_SIRETLIE, 14 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif SIRETLIETYPE Type de sitet lié
Metier_Util_String::initstr($ev_SIRETLIETYPE, 1) .
// 1151 (5) : Facultatif NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert)
Metier_Util_String::initstr($a['AutreSiret']['pre']['nic'], 5 , '0', Metier_Util_String::ALIGN_RIGHT) . // @todo non definie
// 14 (9) : Facultatif NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert)
Metier_Util_String::initstr($a['AutreSiret']['suc']['nic'], 5 , '0', Metier_Util_String::ALIGN_RIGHT) . // @todo non definie
// 14 (9) : Facultatif insDESTINAT Destination Insee
Metier_Util_String::initstr($ev_DESTINAT, 2 ) .
// 14 (9) : Facultatif insDEPCOMEN Code commune Insee du siège de l'entreprise
Metier_Util_String::initstr($b['insDEPCOMEN'], 5 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMNICSIEGE Indicateur de MAJ du NIC SIEGE
Metier_Util_String::initstr($ev_MNICSIEGE, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMNOMEN Indicateur de MAJ de la Raison Sociale
Metier_Util_String::initstr($ev_MNOMEN, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMCJ Indicateur de MAJ de la Forme Juridique
Metier_Util_String::initstr($ev_MCJ, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMAPEN Indicateur de MAJ du NAF entreprise
Metier_Util_String::initstr($ev_MAPEN, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE
Metier_Util_String::initstr($ev_MENSEIGNE, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMAPET Indicateur de MAJ du NAF établissement
Metier_Util_String::initstr($ev_MAPET, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement
Metier_Util_String::initstr($ev_MADRESSE, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMAUXILT Indicateur de MAJ de l'AUXILIARITE
Metier_Util_String::initstr($ev_MAUXILT, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMSIGLE Indicateur de MAJ du SIGLE
Metier_Util_String::initstr($ev_MSIGLE, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep
Metier_Util_String::initstr($ev_MEXPLEN, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab
Metier_Util_String::initstr($ev_MEXPLET, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif ADR_RNVP Type de Prestation RNVP si RNVP
Metier_Util_String::initstr($codeRnvp, 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif L1_nomen Ligne 1 : Nom de l'entreprise
Metier_Util_String::initstr($L1rnvp, 38 ) .
// 14 (9) : Facultatif L2_COMP Ligne 2 : Complément de nom
Metier_Util_String::initstr($L2rnvp, 38 ) .
// 14 (9) : Facultatif L3_CADR Ligne 3 : Complément d'adresse
Metier_Util_String::initstr($L3rnvp, 38 ) .
// 14 (9) : Facultatif L4_VOIE Ligne 4 : Adresse
Metier_Util_String::initstr($L4rnvp, 38 ) .
// 14 (9) : Facultatif L5_DISP Ligne 5 : Distribution spéciale
Metier_Util_String::initstr($L5rnvp, 38 ) .
// 14 (9) : Facultatif L6_POST Ligne 6 : Code Postal, commune, etc..
Metier_Util_String::initstr($L6rnvp, 38 ) .
Metier_Util_String::initstr($L7rnvp, 38 ) .
// 14 (9) : Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE*
Metier_Util_String::initstr($b['insEAEANN'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE
Metier_Util_String::initstr($b['insEAEAPEN'], 5 ) .
// 14 (9) : Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE
Metier_Util_String::initstr($b['insEAESEC1N'], 5 ) .
// 14 (9) : Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE
Metier_Util_String::initstr($b['insEAESEC2N'], 5 ) .
// 14 (9) : Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE
Metier_Util_String::initstr($b['insEAESEC3N'], 5 ) .
// 14 (9) : Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE
Metier_Util_String::initstr($b['insEAESEC4N'], 5 ) .
// P 1475 - L 12 : Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984)
Metier_Util_String::initstr($a['GeoLat'], 12 , ' ', Metier_Util_String::ALIGN_RIGHT) . // @todo : format
// 14 (9) : Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984)
Metier_Util_String::initstr($a['GeoLon'], 12 , ' ', Metier_Util_String::ALIGN_RIGHT) . // @todo : format
// P 1499 - L 1 : Facultatif GPSP Niveau de précision du géocodage
Metier_Util_String::initstr($a['GeoPrecis'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) . // @todo : format
// 14 (9) : Facultatif ZUS Identifiant de la Zone Urbaine Sensible
Metier_Util_String::initstr($a['GeoInfos']['NZUS'], 10 ) .
// 14 (9) : Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine
Metier_Util_String::initstr($a['GeoInfos']['NZRU'], 10 ) .
// 14 (9) : Facultatif ZFU Identifiant de la Zone Franche Urbaine
Metier_Util_String::initstr($a['GeoInfos']['NZFU'], 10 ) .
// 14 (9) : Facultatif CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social
Metier_Util_String::initstr($a['GeoInfos']['NCUCS'],10 ) .
// 14 (9) : Facultatif AFR Identifiant de la Zone AFR
Metier_Util_String::initstr($a['GeoInfos']['NAFR'], 10 ) .
// 14 (9) : Facultatif ZRR Identifiant de la ZRR
Metier_Util_String::initstr($a['GeoInfos']['NZRR'], 10 ) .
// P 160 - L 15 Facultatif TVA Numéro de TVA Intracommunataire
Metier_Util_String::initstr($a['TvaNumero'], 15 ) .
// P 1575 - L 1 : Facultatif TVAVALIDE Numéro de TVA validé
Metier_Util_String::initstr($a['TvaAttribue'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// P 1576 - L 1 : Facultatif ANCIENSIEGE Ancien siège
Metier_Util_String::initstr($a['AncienSiege'], 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse
Metier_Util_String::initstr($a['Isin'], 12 ) .
// 14 (9) : Facultatif PPDIR1NOM Nom du principal dirigeant
Metier_Util_String::initstr($a['dir1Nom'], 40 ) .
// 14 (9) : Facultatif PPDIR1PRENOM Prénom du principal dirigeant
Metier_Util_String::initstr(preg_replace('/,?\s.*$/','',$a['dir1Prenom']), 30 ) .
// 14 (9) : Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant
Metier_Util_String::initstr($a['dir1NomUsage'], 40 ) .
// 14 (9) : Facultatif PPDIR1DNAISS Date de naissance
Metier_Util_String::initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', Metier_Util_String::ALIGN_RIGHT).
// 14 (9) : Facultatif PPDIR1LNAISS Lieu de Naissance
Metier_Util_String::initstr($a['dir1LieuNaiss'], 35 ) .
// P 1742 - L 4 : Facultatif PPDIR1FONC Code Fonction
Metier_Util_String::initstr($a['dir1Code'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) . // @todo : Pas les mêmes code - correction dans lib
// 14 (9) : Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant
Metier_Util_String::initstr(str_replace('-', '', $a['dir1DateFct']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif PPDIR2NOM Nom du seconde principal dirigeant
Metier_Util_String::initstr($a['dir2Nom'], 40 ) .
// 14 (9) : Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant
Metier_Util_String::initstr(preg_replace('/,?\s.*$/', '', $a['dir2Prenom']), 30 ) .
// 14 (9) : Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant
Metier_Util_String::initstr($a['dir2NomUsage'], 40 ) .
// 14 (9) : Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant
Metier_Util_String::initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', Metier_Util_String::ALIGN_RIGHT).
// 14 (9) : Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant
Metier_Util_String::initstr($a['dir2LieuNaiss'], 35 ) .
// 14 (9) : Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant
Metier_Util_String::initstr($a['dir2Code'], 4 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant
Metier_Util_String::initstr(str_replace('-','', $a['dir2DateFct']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif BILANCLOT Date de dernière clôture de bilan disponible
Metier_Util_String::initstr(str_replace('-','', $a['bilanDate']), 8 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif BILANDUREE Durée du dernier exercice disponible
Metier_Util_String::initstr($a['bilanMois'], 2 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible
Metier_Util_String::initstr($tcaSEDmt, 15 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif BILANRES Résultat au dernier bilan disponible
Metier_Util_String::initstr($a['bilanHN'], 15 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Tranche de CA SED
Metier_Util_String::initstr($tcaSED, 1 ) .
// 14 (9) : Type de tranche de CA : (R)éel, (I)nconnu ou (E)stimé
Metier_Util_String::initstr($tcaSEDtype, 1 ) .
// 14 (9) : Année du CA
Metier_Util_String::initstr($tcaSEDannee, 4 ) .
// 14 (9) : PPDIR1 Genre
Metier_Util_String::initstr($a['dir1Genre'], 1 ) . // @todo : De temps en temps non délivrés
// 14 (9) : PPDIR2 Genre
Metier_Util_String::initstr($a['dir2Genre'], 1 ) . // @todo : De temps en temps non délivrés
// 14 (9) : Indicateur du champ de publipostage
Metier_Util_String::initstr($a['IND_PUBLIPO']*1, 1 ) .
// 14 (9) : Facultatif FILLER1 Zone libre
Metier_Util_String::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, Metier_Util_String::initstr($str,LONGUEUR_LIGNE_SORTIE).$OptionEOL, FILE_APPEND);
$nbLignes++;
$nbLignes200++;
$mBil=new Metier_Partenaires_MBilans($siren);
$tabBilans = $mBil->listeBilans();
$iBil=0;
if ($OptionNbBilansMax>0) {
foreach ($tabBilans as $idxBilan=>$derBilan) {
$iBil++;
$t5=microtime(1);
$p = $mBil->getBilan(Metier_Util_Date::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 = Metier_Util_String::initstr($OptionTypeLigneBilan, 3) .
// 14 (9) : Obligatoire ID Numéro unique d'identification interne d'un établissement S&D
Metier_Util_String::initstr($a['SourceId'], 10, '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire SIREN Siren de l'entreprise
Metier_Util_String::initstr($siren, 9, '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire NIC Nic de l'établissement
Metier_Util_String::initstr($nic, 5, '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire SOURCE Source de la fiche d'identité
Metier_Util_String::initstr($a['Source'], 3, '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Obligatoire SIRETVALIDE Siren/siret valide
Metier_Util_String::initstr($iInsee->valideSiren($siren,$nic), 1 , '0', Metier_Util_String::ALIGN_RIGHT) .
// 14 (9) : Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés
Metier_Util_String::initstr($a['numRC'], 10 ) .
// 14 (9) : Facultatif TRIBUNAL Identifiant du Tribunal
Metier_Util_String::initstr($a['Tribunal'], 6 ) .
// DATEMAJ Date de la dernière mise à jour du bilan dans la base S&D Format AAAAMMJJ
Metier_Util_String::initstr(str_replace('-','',$p['DATE_FRAICHE_BILAN']), 8, '0', Metier_Util_String::ALIGN_RIGHT) .
// MILLESIME Année du bilan
Metier_Util_String::initstr(substr($p['DATE_FRAICHE_BILAN'],0,4), 4, '0', Metier_Util_String::ALIGN_RIGHT) .
// BILAN_DATE Date de clôture du bilan Format AAAAMMJJ
Metier_Util_String::initstr(str_replace('-','',$p['DATE_CLOTURE']), 8, '0', Metier_Util_String::ALIGN_RIGHT) .
// BILAN_DUREE Durée de l'exercice en mois
Metier_Util_String::initstr($p['DUREE_MOIS'], 2, '0', Metier_Util_String::ALIGN_RIGHT) .
// BILAN_DATEP Date de clôture du bilan précédent Format AAAAMMJJ
Metier_Util_String::initstr(str_replace('-','',$p['DATE_CLOTURE_PRE']), 8, '0', Metier_Util_String::ALIGN_RIGHT) .
// BILAN_DUREEP Durée de l'exercice précédent en mois
Metier_Util_String::initstr($p['DUREE_MOIS_PRE'], 2, '0', Metier_Util_String::ALIGN_RIGHT) .
// BILAN_LIASSE Numéro de la première liasse du bilan 2033,2050
Metier_Util_String::initstr($numLiasse,4) .
// BILAN_TYPE Type de bilan S=Réel Normal Simplifié, C=Consolidé, N=Réel Normal
Metier_Util_String::initstr($p['CONSOLIDE'], 1) .
// BILAN_MONNAIE Code devise de livraison selon la norme ISO 4217 (3 lettres)
Metier_Util_String::initstr($p['MONNAIE'], 3) .
// BILAN_MONNAIEO Code devise d'origine du bilan selon la norme ISO 4217*
Metier_Util_String::initstr($p['MONNAIE_ORI'], 3) .
// BILAN_UNITE Unité du bilan livré U=en unité de devise, K=en milliers, M=en millions
Metier_Util_String::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.=Metier_Util_String::initstr(count($p), 4, '0', Metier_Util_String::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.= Metier_Util_String::initstr($code, 4).$signe.Metier_Util_String::initstr(abs($valeur), 20, '0', Metier_Util_String::ALIGN_RIGHT);
if($nbP<76) continue;
// --- Ecriture ligne 400
file_put_contents($filepath, Metier_Util_String::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, Metier_Util_String::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, Metier_Util_String::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= Metier_Util_String::initstr('999', 3, '0', Metier_Util_String::ALIGN_RIGHT) . // Type de ligne
Metier_Util_String::initstr($dateFin, 14) . // Date & Heure de fin génération du fichier
Metier_Util_String::initstr($OptionClientNumTourFichier, 10, '0', Metier_Util_String::ALIGN_RIGHT) . // Numéro de tour du fichier pour le client
Metier_Util_String::initstr($prestaId, 36) . // Identifiant Client
Metier_Util_String::initstr($OptionTypePrestation, 32) . // Type de prestation
Metier_Util_String::initstr($nbLignes, 10, '0', Metier_Util_String::ALIGN_RIGHT) . // Nombre de lignes Total du fichier
'';
// Pas de fin de ligne sur la dernière ligne
file_put_contents($filepath, Metier_Util_String::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";
$mail = new Metier_Util_Mail();
if($mail->send('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) {
$mail = new Metier_Util_Mail();
$mail->send('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', $messageFinObj, $messageFinMsg);
}
function exporteRatio($valeur) {
$signe='+';
if($valeur<0) $signe='-';
return ''.$signe.Metier_Util_String::initstr(abs($valeur), 20, '0', Metier_Util_String::ALIGN_RIGHT);
}