Insee : siret associés, meilleur gestion du siret prédécesseur et successeur

This commit is contained in:
Michael RICOIS 2016-04-05 16:41:49 +00:00
parent cbf6a0d5f1
commit acef060fc3

View File

@ -6270,79 +6270,122 @@ class Metier_Insee_MInsee extends Metier_Insee_Table
return $ret[0]['insDATEVE'];
}
/** Recherche les siret associés à un siret (successeur et/ou prédécesseur)
**
** @param integer $siren Siren de l'entreprise
** @param integer $nic Nic de l'étabissement
** @param integer $lien Type de lien (-1=prédécesseur, 0=prédécesseur et/ou successeur, 1=successeur)
**/
/**
* Recherche les siret associés à un siret (successeur et/ou prédécesseur)
* @param int $siren
* Siren de l'entreprise
* @param int $nic
* Nic de l'étabissement
* @param int $lien
* Type de lien (-1=prédécesseur, 0=prédécesseur et/ou successeur, 1=successeur)
*/
public function getSiretAssoc($siren, $nic, $lien=0)
{
$tabRet=array();
$ret=$this->iDb->select('insee.insee_even',
$tabRet = array();
$ret = $this->iDb->select('insee.insee_even',
'LPAD(insSIREN,9,0) AS insSIREN, LPAD(insNIC,5,0) AS insNIC, insDATEVE, insEVE, insAPET700, insSIEGE, insLIBCOM, insL1_NOMEN, insL2_COMP, insL4_VOIE, insL3_CADR, insL5_DISP, insL6_POST, insCODPOS, insL7_ETRG, insDEPCOM, insCODEVOIE, insNICTRAN, insSIRETPS, insDATEMAJ, idFlux, insSIRETASS, insDESTINAT, insTYPETAB, insORIGINE, insTRAN, insNOMEN, insENSEIGNE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, sirVersion',
"insSIREN=$siren AND insNIC<>$nic AND (insEVE IN ('510','520','530','540', 'CTS','CTE','STS','STE','MTDS','MTDE','MTAS','MTAE') OR insEVE LIKE 'T%') AND insDATEMAJ IN (
SELECT insDATEMAJ FROM insee.insee_even WHERE insSIREN=$siren AND insNIC=$nic AND (insEVE IN ('510','520','530','540', 'CTS','CTE','STS','STE','MTDS','MTDE','MTAS','MTAE') OR insEVE LIKE 'T%')
)", false, MYSQL_ASSOC);
if ( count($ret)>0 ) {
$datePre = $dateSuc = 0;
$nicPre = $nicSuc = 0;
if (count($ret) > 0) {
foreach ($ret as $iRet=>$tabEve) {
if ($tabEve['sirVersion']==4) {
if ($tabEve['insEVE']=='CTE' || $tabEve['insEVE']=='CTS' || $tabEve['insEVE']=='MTAE' || $tabEve['insEVE']=='MTAS') $typeLien='suc';
elseif ($tabEve['insEVE']=='STE' || $tabEve['insEVE']=='STS' || $tabEve['insEVE']=='MTDE' || $tabEve['insEVE']=='MTDS') $typeLien='pre';
else $typeLien='ind';
if ($tabEve['sirVersion'] == 4) {
if (in_array($tabEve['insEVE'], array('CTE','CTS','MTAE','MTAS'))) {
$typeLien = 'suc';
}
elseif (in_array($tabEve['insEVE'], array('STE','STS','MTDE','MTDS'))) {
$typeLien = 'pre';
}
else {
$typeLien = 'ind';
}
} else {
switch($tabEve['insTYPETAB']*1) {
case 8:
case 10:
case 20:
case 30:
if ($lien==1) continue;
$typeLien='pre';
if ($lien == 1) continue;
$typeLien = 'pre';
break;
case 9:
case 11:
case 21:
case 31:
if ($lien==-1) continue;
$typeLien='suc';
if ($lien == -1) continue;
$typeLien = 'suc';
break;
default:
switch($tabEve['insTRAN']) {
case 'D': if ($lien==1) continue; $typeLien='pre'; break(2);
case 'A': if ($lien==-1) continue; $typeLien='suc'; break(2);
default : if ($lien<>0) continue; $typeLien='ind'; break;
case 'D': if ($lien == 1) continue; $typeLien='pre'; break(2);
case 'A': if ($lien == -1) continue; $typeLien='suc'; break(2);
default : if ($lien != 0) continue; $typeLien='ind'; break;
}
}
}
$adr1=$tabEve['insL1_NOMEN'];
if ($adr1==NULL) $adr1=$tabEve['insNOMEN'];
$adr2=$tabEve['insL2_COMP'];
if ($adr2==NULL) $adr2=$tabEve['insENSEIGNE'];
$adr4=$tabEve['insL4_VOIE'];
if ($adr4==NULL) $adr4=preg_replace('/ +/',' ', $tabEve['insNUMVOIE'].' '.$tabEve['insINDREP'].' '.$tabEve['insTYPVOIE'].' '.$tabEve['insLIBVOIE']);
// Le NIC prédécesseur ne peut pas être le NIC actuel
if ($nicPre > 0 && $nicPre == $tabEve['insNIC']) {
continue;
}
// Le NIC successeur ne peut pas être le NIC actuel
if ($nicSuc > 0 && $nicSuc == $tabEve['insNIC']) {
continue;
}
$tabRet[$typeLien]=array(
'siren' => $tabEve['insSIREN'],
// L'évènement successeur ne peut pas être antérieur au prédécesseur
if ($dateSuc > 0 && $datePre > 0 && $dateSuc < $datePre) {
continue;
}
// Predecesseur et Successeur en mémoire
if ($typeLien == 'pre') {
$datePre = $tabEve['insDATEVE'];
$nicPre = $tabEve['insNIC'];
}
if ($typeLien == 'suc') {
$dateSuc = $tabEve['insDATEVE'];
$nicSuc = $tabEve['insNIC'];
}
// Data
$adr1 = $tabEve['insL1_NOMEN'];
if ($adr1 == null) {
$adr1=$tabEve['insNOMEN'];
}
$adr2 = $tabEve['insL2_COMP'];
if ($adr2 == null) {
$adr2=$tabEve['insENSEIGNE'];
}
$adr4 = $tabEve['insL4_VOIE'];
if ($adr4 == null) {
$adr4 = preg_replace('/ +/',' ', $tabEve['insNUMVOIE'].' '.$tabEve['insINDREP'].' '.
$tabEve['insTYPVOIE'].' '.$tabEve['insLIBVOIE']);
}
$tabRet[$typeLien] = array(
'siren' => $tabEve['insSIREN'],
'nic' => $tabEve['insNIC'],
'apeEtab' => $tabEve['insAPET700'],
'codeEve' => $tabEve['insEVE'],
'dateEve' => $tabEve['insDATEVE'],
'adrL1' => trim($adr1),
'adrL2' => trim($adr2),
'adrL3' => trim(prepareString($tabEve['insL3_CADR'])),
'adrL4' => trim($adr4),
'adrL5' => trim($tabEve['insL5_DISP']),
'adrL6' => trim($tabEve['insL6_POST']),
'adrL7' => trim($tabEve['insL7_ETRG']),
'adrL1' => trim($adr1),
'adrL2' => trim($adr2),
'adrL3' => trim(prepareString($tabEve['insL3_CADR'])),
'adrL4' => trim($adr4),
'adrL5' => trim($tabEve['insL5_DISP']),
'adrL6' => trim($tabEve['insL6_POST']),
'adrL7' => trim($tabEve['insL7_ETRG']),
'depCom' => $tabEve['insDEPCOM'],
'rivoli' => $tabEve['insCODEVOIE'],
'siege' => $tabEve['insSIEGE'],
'siege' => $tabEve['insSIEGE'],
'destinat' => $tabEve['insDESTINAT'],
'typEtab' => $tabEve['insTYPETAB'],
'origine' => $tabEve['insORIGINE'],
// insNICTRAN, insSIRETPS, insDATEMAJ, idFlux, insSIRETASS,
);
}
}