webservice/includes/partenaires/classMRncsFlux2.php
2010-11-04 11:05:01 +00:00

922 lines
32 KiB
PHP
Raw Blame History

<?
global $tabOrt2Sd;
$tabOrt2Sd=array( '_130000001'=>'SIREN',
'_103000040'=>'CONSOLIDE',
'_103000033'=>'DATE_CLOTURE',
'_103000023'=>'DUREE_MOIS',
'_103000202'=>'MONNAIE_ORI',
'_103000205'=>'MONNAIE_ORI_UNITE',
'_103000211'=>'MONNAIE',
'_103000214'=>'MONNAIE_LIV_UNITE',
'_103000029'=>'AVIS_CAC',
'_130000009'=>'CODE_NAF',
'_103101001'=>'AA',
'_103101002'=>'AB',
'_103101003'=>'AC',
'_103101004'=>'AC1',
'_103101005'=>'AD',
'_103101006'=>'AE',
'_103101007'=>'AE1',
'_103101008'=>'AF',
'_103101009'=>'AG',
'_103101010'=>'AG1',
'_103101011'=>'AH',
'_103101012'=>'AI',
'_103101013'=>'AI1',
'_103101014'=>'AJ',
'_103101015'=>'AK',
'_103101016'=>'AK1',
'_103101017'=>'AL',
'_103101018'=>'AM',
'_103101019'=>'AM1',
'_103101020'=>'AN',
'_103101021'=>'AO',
'_103101022'=>'AO1',
'_103101023'=>'AP',
'_103101024'=>'AQ',
'_103101025'=>'AQ1',
'_103101026'=>'AR',
'_103101027'=>'AS',
'_103101028'=>'AS1',
'_103101029'=>'AT',
'_103101030'=>'AU',
'_103101031'=>'AU1',
'_103101032'=>'AV',
'_103101033'=>'AW',
'_103101034'=>'AW1',
'_103101035'=>'AX',
'_103101036'=>'AY',
'_103101037'=>'AY1',
'_103101038'=>'CS',
'_103101039'=>'CT',
'_103101040'=>'CT1',
'_103101041'=>'CU',
'_103101042'=>'CV',
'_103101043'=>'CV1',
'_103101044'=>'BB',
'_103101045'=>'BC',
'_103101046'=>'BC1',
'_103101047'=>'BD',
'_103101048'=>'BE',
'_103101049'=>'BE1',
'_103101050'=>'BF',
'_103101051'=>'BG',
'_103101052'=>'BG1',
'_103101053'=>'BH',
'_103101054'=>'BI',
'_103101055'=>'BI1',
'_103101056'=>'BJ',
'_103101057'=>'BK',
'_103101058'=>'BK1',
'_103101059'=>'BL',
'_103101060'=>'BM',
'_103101061'=>'BM1',
'_103101062'=>'BN',
'_103101063'=>'BO',
'_103101064'=>'BO1',
'_103101065'=>'BP',
'_103101066'=>'BQ',
'_103101067'=>'BQ1',
'_103101068'=>'BR',
'_103101069'=>'BS',
'_103101070'=>'BS1',
'_103101071'=>'BT',
'_103101072'=>'BU',
'_103101073'=>'BU1',
'_103101074'=>'BV',
'_103101075'=>'BW',
'_103101076'=>'BW1',
'_103101077'=>'BX',
'_103101078'=>'BY',
'_103101079'=>'BY1',
'_103101080'=>'BZ',
'_103101081'=>'CA',
'_103101082'=>'CA1',
'_103101083'=>'CB',
'_103101084'=>'CC',
'_103101085'=>'CC1',
'_103101086'=>'CD',
'_103101087'=>'CE',
'_103101088'=>'CE1',
'_103101089'=>'CF',
'_103101090'=>'CG',
'_103101091'=>'CG1',
'_103101092'=>'CH',
'_103101093'=>'CI',
'_103101094'=>'CI1',
'_103101095'=>'CJ',
'_103101096'=>'CK',
'_103101097'=>'CK1',
'_103101098'=>'CL',
'_103101099'=>'CM',
'_103101100'=>'CN',
'_103101101'=>'CO',
'_103101102'=>'1A',
'_103101103'=>'1A1',
'_103101104'=>'CP',
'_103101105'=>'CR',
'_103102001'=>'DA',
'_103102002'=>'DB',
'_103102003'=>'EK',
'_103102004'=>'DC',
'_103102005'=>'DD',
'_103102006'=>'DE',
'_103102007'=>'DF',
'_103102008'=>'DG',
'_103102009'=>'DH',
'_103102010'=>'DI',
'_103102011'=>'DJ',
'_103102012'=>'DK',
'_103102013'=>'DL',
'_103102014'=>'DM',
'_103102015'=>'DN',
'_103102016'=>'DO',
'_103102017'=>'DP',
'_103102018'=>'DQ',
'_103102019'=>'DR',
'_103102020'=>'DS',
'_103102021'=>'DT',
'_103102022'=>'DU',
'_103102023'=>'DV',
'_103102024'=>'DW',
'_103102025'=>'DX',
'_103102026'=>'DY',
'_103102027'=>'DZ',
'_103102028'=>'EA',
'_103102029'=>'EB',
'_103102030'=>'EC',
'_103102031'=>'ED',
'_103102032'=>'EE',
'_103102033'=>'EF',
'_103102034'=>'EG',
'_103102035'=>'EH',
'_103102036'=>'EI',
'_103103001'=>'FA',
'_103103002'=>'FB',
'_103103003'=>'FC',
'_103103004'=>'FD',
'_103103005'=>'FE',
'_103103006'=>'FF',
'_103103007'=>'FG',
'_103103008'=>'FH',
'_103103009'=>'FI',
'_103103010'=>'FJ',
'_103103011'=>'FK',
'_103103012'=>'FL',
'_103103013'=>'FM',
'_103103014'=>'FN',
'_103103015'=>'FO',
'_103103016'=>'FP',
'_103103017'=>'FQ',
'_103103018'=>'FR',
'_103103019'=>'FS',
'_103103020'=>'FT',
'_103103021'=>'FU',
'_103103022'=>'FV',
'_103103023'=>'FW',
'_103103024'=>'FX',
'_103103025'=>'FY',
'_103103026'=>'FZ',
'_103103027'=>'GA',
'_103103028'=>'GB',
'_103103029'=>'GC',
'_103103030'=>'GD',
'_103103031'=>'GE',
'_103103032'=>'GF',
'_103103033'=>'GG',
'_103103034'=>'GH',
'_103103035'=>'GI',
'_103103036'=>'GJ',
'_103103037'=>'GK',
'_103103038'=>'GL',
'_103103039'=>'GM',
'_103103040'=>'GN',
'_103103041'=>'GO',
'_103103042'=>'GP',
'_103103043'=>'GQ',
'_103103044'=>'GR',
'_103103045'=>'GS',
'_103103046'=>'GT',
'_103103047'=>'GU',
'_103103048'=>'GV',
'_103103049'=>'GW',
'_103103050'=>'HA',
'_103103051'=>'HB',
'_103103052'=>'HC',
'_103103053'=>'HD',
'_103103054'=>'HE',
'_103103055'=>'HF',
'_103103056'=>'HG',
'_103103057'=>'HH',
'_103103058'=>'HI',
'_103103059'=>'HJ',
'_103103060'=>'HK',
'_103103061'=>'HL',
'_103103062'=>'HM',
'_103103063'=>'HN',
'_103103064'=>'HP',
'_103103065'=>'HQ',
'_103104077'=>'A1',
'_103104078'=>'A2',
'_103104079'=>'A3',
'_103104080'=>'A4',
'_103104001'=>'KF',
'_103104002'=>'LP',
'_103104003'=>'0J',
'_103104004'=>'MY',
'_103104005'=>'NC',
'_103104006'=>'2E',
'_103104007'=>'0K',
'_103104008'=>'PD',
'_103104009'=>'PH',
'_103104010'=>'QX',
'_103104011'=>'ON',
'_103104012'=>'OP',
'_103104013'=>'OQ',
'_103104014'=>'OR',
'_103104015'=>'SM',
'_103104016'=>'SP',
'_103104017'=>'5R',
'_103104018'=>'5S',
'_103104019'=>'5T',
'_103104020'=>'5U',
'_103104021'=>'7B',
'_103104022'=>'TY',
'_103104023'=>'TZ',
'_103104024'=>'UA',
'_103104025'=>'UF',
'_103104026'=>'UH',
'_103104027'=>'UK',
'_103104028'=>'UM',
'_103104029'=>'UR',
'_103104030'=>'UV',
'_103104031'=>'VA',
'_103104032'=>'UY',
'_103104033'=>'UZ',
'_103104034'=>'VB',
'_103104035'=>'VN',
'_103104036'=>'VT',
'_103104037'=>'VU',
'_103104038'=>'VV',
'_103104039'=>'7Y1',
'_103104040'=>'7Z1',
'_103104041'=>'VG',
'_103104042'=>'VG1',
'_103104043'=>'VH',
'_103104044'=>'VH1',
'_103104045'=>'8A1',
'_103104046'=>'8B1',
'_103104047'=>'8C',
'_103104048'=>'8C1',
'_103104049'=>'8D',
'_103104050'=>'8D1',
'_103104051'=>'8E1',
'_103104052'=>'VW',
'_103104053'=>'VW1',
'_103104054'=>'VX',
'_103104055'=>'VX1',
'_103104056'=>'VQ',
'_103104057'=>'VQ1',
'_103104058'=>'8J1',
'_103104059'=>'VI',
'_103104060'=>'VI1',
'_103104061'=>'8K1',
'_103104062'=>'SZ1',
'_103104063'=>'8L1',
'_103104064'=>'VY',
'_103104065'=>'VZ',
'_103104066'=>'VZ1',
'_103104067'=>'VZ2',
'_103104068'=>'YQ',
'_103104069'=>'YR',
'_103104070'=>'YS',
'_103104071'=>'YT',
'_103104072'=>'YU',
'_103104073'=>'YV',
'_103104074'=>'YY',
'_103104075'=>'YZ',
'_103104076'=>'YP',
'_103104081'=>'CZ',
'_103104082'=>'KB',
'_103104083'=>'KC',
'_103104084'=>'KD',
'_103104085'=>'KE',
'_103104086'=>'LN',
'_103104087'=>'LO',
'_103104088'=>'LQ',
'_103104089'=>'LR',
'_103104090'=>'LS',
'_103104091'=>'0G',
'_103104092'=>'0H',
'_103104093'=>'NL',
'_103104094'=>'LT',
'_103104095'=>'LU',
'_103104096'=>'NO',
'_103104097'=>'LV',
'_103104098'=>'LW',
'_103104099'=>'NN',
'_103104100'=>'NG',
'_103104101'=>'NH',
'_103104102'=>'NM',
'_103104103'=>'NJ',
'_103104104'=>'NK',
'_103104105'=>'NP',
'_103104106'=>'0L',
'_103104107'=>'PA',
'_103104108'=>'PB',
'_103104109'=>'PC',
'_103104110'=>'PE',
'_103104111'=>'PF',
'_103104112'=>'PG',
'_103104113'=>'QU',
'_103104114'=>'QV',
'_103104115'=>'QW',
'_103104116'=>'Z91',
'_103104117'=>'Z92',
'_103104118'=>'SN',
'_103104119'=>'SP_1',
'_103104120'=>'SP_2',
'_103104121'=>'SR',
'_103104122'=>'TO',
'_103104123'=>'3Z',
'_103104124'=>'TS',
'_103104125'=>'TT',
'_103104126'=>'TU',
'_103104127'=>'4D',
'_103104128'=>'4H',
'_103104129'=>'4M',
'_103104130'=>'4S',
'_103104131'=>'4W',
'_103104132'=>'5A',
'_103104133'=>'5E',
'_103104134'=>'5K',
'_103104135'=>'5P',
'_103104136'=>'5Y',
'_103104137'=>'5Z',
'_103104138'=>'TV',
'_103104139'=>'TW',
'_103104140'=>'TX',
'_103104141'=>'6A',
'_103104142'=>'6B',
'_103104143'=>'6C',
'_103104144'=>'6D',
'_103104145'=>'6E',
'_103104146'=>'6F',
'_103104147'=>'6G',
'_103104148'=>'6H',
'_103104149'=>'02',
'_103104150'=>'03',
'_103104151'=>'04',
'_103104152'=>'05',
'_103104153'=>'06',
'_103104154'=>'07',
'_103104155'=>'08',
'_103104156'=>'09',
'_103104157'=>'6N',
'_103104158'=>'6P',
'_103104159'=>'6R',
'_103104160'=>'6S',
'_103104161'=>'6T',
'_103104162'=>'6U',
'_103104163'=>'6V',
'_103104164'=>'6W',
'_103104165'=>'6X',
'_103104166'=>'6Y',
'_103104167'=>'6Z',
'_103104168'=>'7A',
'_103104169'=>'7C',
'_103104170'=>'UB',
'_103104171'=>'UC',
'_103104172'=>'UD',
'_103104173'=>'UE',
'_103104174'=>'UG',
'_103104175'=>'UJ',
'_103104176'=>'UL',
'_103104177'=>'UP',
'_103104178'=>'UT',
'_103104179'=>'UX',
'_103104180'=>'UQ',
'_103104181'=>'UU',
'_103104182'=>'VM',
'_103104183'=>'VP',
'_103104184'=>'VC',
'_103104185'=>'VR',
'_103104186'=>'VS',
'_103104187'=>'7Y',
'_103104188'=>'7Y2',
'_103104189'=>'7Z',
'_103104190'=>'7Z2',
'_103104191'=>'VG2',
'_103104192'=>'VH2',
'_103104193'=>'8A',
'_103104194'=>'8A2',
'_103104195'=>'8B',
'_103104196'=>'8B2',
'_103104197'=>'8C2',
'_103104198'=>'8D2',
'_103104199'=>'8E',
'_103104200'=>'8E2',
'_103104201'=>'VW2',
'_103104202'=>'VX2',
'_103104203'=>'VQ2',
'_103104204'=>'8J',
'_103104205'=>'8J2',
'_103104206'=>'8J3',
'_103104207'=>'VI2',
'_103104208'=>'VI3',
'_103104209'=>'8K',
'_103104210'=>'8K2',
'_103104211'=>'SZ',
'_103104212'=>'SZ2',
'_103104213'=>'8L',
'_103104214'=>'8L2',
'_103104215'=>'VJ',
'_103104216'=>'VK',
'_103104217'=>'ZE',
'_103104218'=>'XQ',
'_103104219'=>'SS',
'_103104220'=>'ST',
'_103104221'=>'ZJ',
'_103104222'=>'YW',
'_103104223'=>'9Z',
'_103104224'=>'YX',
'_103104225'=>'9X',
'_103102037'=>'B1',
'_103102038'=>'EJ',
);
include_once(FWK_PATH.'common/curl.php');
define('RNCS_WS_URL', 'http://www.services.ort.fr/ProtocoleRNCS/access');
define('RNCS_WS_USER', '167260');
define('RNCS_WS_PASS', '100356');
class MRncsFlux {
public $body = '';
public $header = '';
public $codeRetour = 0;
public $errMsgInpi='';
public $errNumInpi='';
public $cookie='';
public $iDb;
public $tabVitrine=array();
public $tabErreurInpi=array(0=>"Aucune erreur",
10=>"Erreur de protocole avec syst<73>me distant",
11=>"Syst<EFBFBD>me distant inaccessible",
101=>"Type de requ<71>te invalide",
102=>"Code d'erreur appelant invalide",
103=>"Identification non reconnue",
107=>"Date invalide",
108=>"Heure invalide",
110=>"Code produit inconnu",
115=>"Num<EFBFBD>ro de champ invalide",
116=>"Longueur de champ invalide",
121=>"Code de protocole invalide",
122=>"Code base de donn<6E>es invalide",
900=>"Erreur applicative",
990100=>"+ de 50 entreprises trouv<75>es",
990101=>"Recherche complexe",
990102=>"Crit<EFBFBD>res saisis insuffisants",
990103=>"Requ<EFBFBD>te trop impr<70>cise",
990104=>"D<EFBFBD>nomination non significative",
990105=>"Crit<EFBFBD>re commune non g<>n<EFBFBD>rall",
990106=>"Crit<EFBFBD>re voie trop g<>n<EFBFBD>ral",
990107=>"Commune obligatoire avec rue",
990108=>"Commune non identifi<66>e",
990109=>"Entreprise non identifi<66>e",
990110=>"Erreur syst<73>me",
990111=>"Devise incorrecte",
990112=>"Autre erreur",
990113=>"Donn<EFBFBD>e incorrecte",
990114=>"Valeur incoh<6F>rente",
990115=>"Surveillance impossible",
990116=>"Entreprise non surveill<6C>e",
990117=>"Entreprise d<>j<EFBFBD> surveill<6C>e",
990118=>"Produit indisponible",
990119=>"Erreur base de donn<6E>es",
990120=>"Erreur facturation",
);
function __construct() {
$this->iDb=new WDB();
}
function getVitrine($siren) {
$this->tabVitrine=$this->query($siren, array('Type'=>'QVIT'));
return $this->tabVitrine;
}
/*
$cmdPages=$cmdNom='';
if (isset($_REQUEST['pages'])) $cmdPages=$_REQUEST['pages'];
if (isset($_REQUEST['nom'])) $cmdNom=$_REQUEST['nom'];
if (isset($_REQUEST['vue'])) $vue=$_REQUEST['vue'];
if ($vue=='bilans') $presta='12004';
else $presta='12003';
if ($cmdNom && $cmdPages) $type='QDOC';
else $type='QVIT';
$prod=array('Type'=>$type,
'Presta'=>$presta,
'Num'=>'2',//2,
'Ver'=>'2',//2,
'Siren'=>$siren,
'CmdNom'=>$cmdNom,
'CmdPages'=>$cmdPages,
'CmdBilan'=>'',
);
$ref='';
*/
public function query($siren, $prod=array()) {
/*$prod=array('Type'=>$type,
'Presta'=>$presta,
'Siren'=>$siren,
'CmdNom'=>$cmdNom,
'CmdPages'=>$cmdPages,
'CmdBilan'=>'',
'Ref'=>'',
);
*/
$option='';
if ( ($prod['Type']=='QDOC' || $prod['Presta']==12004 || $prod['Presta']==12003) && !isset($prod['Num'])) {
$prod['Num']=2;
$prod['Ver']=2;
} elseif (!isset($prod['Num'])) {
$prod['Num']=1;
$prod['Ver']=3;
}
$req= '<?xml version="1.0" ?>'. "\n".
'<ort:message xmlns:ort="http://www.ort.fr/NEWPORT/V2">'. "\n".
' <ort:_1 type="110">'. "\n".
' <ort:_7 type="010">NPORT</ort:_7>'. "\n".
' <ort:_8 type="010">2</ort:_8>'. "\n". // Version du protocole
' <ort:_9 type="010">1</ort:_9>'. "\n". // Version du dictionnaire
' <ort:_10 type="010">1</ort:_10>'. "\n". // Code protocole/version application
' <ort:_11 type="010">PROTORNCS</ort:_11>'. "\n".
' <ort:_12 type="010">'.$prod['Type'].'</ort:_12>'. "\n". // Prestation souhait<69>e QVIT / QDOC
' <ort:_13 type="010">0</ort:_13>'. "\n". // Code retour/erreur
' <ort:_14 type="010">'.RNCS_WS_USER.RNCS_WS_PASS.'</ort:_14>'."\n". // User Password concat<61>n<EFBFBD>s
' <ort:_15 type="010">'.$prod['Ref'].'</ort:_15>'. "\n". // R<>f.
' <ort:_16 type="010">'.date('Ymd').'</ort:_16>'. "\n". // Date SSAAMMJJ
' <ort:_17 type="010">'.date('His').'</ort:_17>'. "\n". // Heure HHMMSS
' <ort:_19 type="010">ORT</ort:_19>'. "\n".
' </ort:_1>'. "\n".
' <ort:_2 type="110">'. "\n".
' <ort:_1 type="110">'. "\n".
' <ort:_26 type="010">'.$prod['Prod'].'</ort:_26>'. "\n". // Type de produit (vide pour QVIT)
' <ort:_27 type="010">'.$prod['Num'].'</ort:_27>'. "\n". // Num<75>ro de produit souhait<69> 1 2
' <ort:_28 type="010">'.$prod['Ver'].'</ort:_28>'. "\n". // Version du produit 3 2
' <ort:_31 type="010">'.$prod['Presta'].'</ort:_31>'. "\n". // Code prestation (vide pour QVIT)
' </ort:_1>'. "\n";
if ($prod['Presta']==12004 || $prod['Presta']==12003) {
$req.='
<ort:_2 type="110">
<ort:_100 type="111">
<ort:_101 type="110">
<ort:_120000031 type="010">'.$prod['Presta'].'</ort:_120000031>
<ort:_100700010 type="010">FTP</ort:_100700010>
<ort:_100701000 type="010">NTIF</ort:_100701000>
<ort:_120000015 type="010" />
</ort:_101>
</ort:_100>
<ort:_200 type="111">
<ort:_210 type="110">
<ort:_130000001 type="010">'.$siren.'</ort:_130000001>
<ort:_103000402 type="010">'.$prod['CmdNom'].'</ort:_103000402>
<ort:_103000403 type="010">'.$prod['CmdPages'].'</ort:_103000403>
<ort:_190000025 type="010">'.$prod['CmdBilan'].'</ort:_190000025>
</ort:_210>
</ort:_200>
</ort:_2>'; //
$option=$prod['CmdNom'].'-'.$prod['CmdPages'].'-'.$prod['CmdBilan'];
} elseif ($prod['Type']=='QINF') {
$req.=' <ort:_2 type="110">'."\n".'<ort:_130000001 type="010">'.$siren.'</ort:_130000001>';
if ($prod['Presta']=='2000' || $prod['Presta']=='2001' || $prod['Presta']=='2002' || $prod['Presta']=='2003') {
// Liste ann<6E>es bilans
$req.='<ort:_190000025 type="010">'.$prod['Millesime'].'</ort:_190000025>'."\n";
$option=$prod['Millesime'];
}
elseif ($prod['Presta']=='12001')
// Flag limitation du nombre d<><64>tablissement
$req.='<ort:_109105002 type="010">N</ort:_109105002>'."\n";
$req.='</ort:_2>';
} else {
$req.=' <ort:_2 type="110">
<ort:_130000001 type="010">'.$siren.'</ort:_130000001>
<ort:_120000031 type="010">'.$prod['Presta'].'</ort:_120000031>
</ort:_2>';// 12003 Actes et statuts 12004 Bilans
}
$req.=' </ort:_2>
</ort:message>';
echo $req.'<hr/>';
$postData=array(''=>$req);
$cookie=$referer='';
$enCache=false;
$params=md5(serialize($prod));
//die($params);
/*if ($prod['CmdNom']<>'' || $prod['CmdPages']<>'' || $prod['CmdBilan']<>'' || $prod['Millesime']<>'')
$strOption=*/
//AND params='$params'
$res=$this->iDb->select('rncs_requetes', 'dateRequete, strXml, codeErreur, libErreur', "siren=$siren AND params='$params' ORDER BY dateRequete DESC");
//type='".$prod['Type']."' AND presta ='".$prod['Presta']."' $strOption ORDER BY dateRequete DESC");
if (count($res)>0) {
$tabRes=$res[0];
$dateReq=$tabRes['dateRequete'];
$this->body=$tabRes['strXml'];
$this->errNumInpi=$tabRes['codeErreur'];
$this->errMsgInpi=$tabRes['libErreur'];
$enCache=true;
echo 'Une requ<71>te dans le cache <br/>';
//die();
} else {
echo 'Pas de requ<71>te dans le cache <br/>';
//die();
$page=getUrl(RNCS_WS_URL, $cookie, $postData, $referer, false, 'www.services.ort.fr');
$this->body=$page['body'];
/**
** ERREUR PROTOCOL
**/
preg_match('/<ort:_13 type="020">(.*)<\/ort:_13>/Uis',$this->body, $matches);
if ($matches[1]*1<>0) {
$this->errNumInpi=$matches[1];
$this->errMsgInpi=$tabErreurInpi[$this->errNumInpi];
//echo "<!-- ERREUR INPI 13 n<>$errNumInpi = $errMsgInpi !!! -->\n";
}
/**
** ERREUR APPLICATIVES NUMERIQUES
**/
preg_match('/<ort:_96 type="020">(.*)<\/ort:_96>/Uis',$this->body, $matches);
if ($matches[1]*1<>0) {
$this->errNumInpi=$matches[1];
$this->errMsgInpi=$tabErreurInpi[$this->errNumInpi];
//echo "<!-- ERREUR INPI 96 n<>$errNumInpi = $errMsgInpi !!! -->\n";
}
/**
** ERREUR APPLICATIVES TEXTE
**/
preg_match('/<ort:_97 type="010">(.*)<\/ort:_97>/Uis',$this->body, $matches);
if ($matches[1]*1<>0) {
$this->errMsgInpi=$matches[1];
//echo "<!-- ERREUR INPI 97 : $errMsgInpi !!! -->\n";
}
$tabInsert=array( 'siren' => $siren,
'dateRequete' => date('YmdHis'),
'strXml' => $this->body,
'params' => md5(serialize($prod)),
'type' => $prod['Type'],
'presta' => $prod['Presta'],
'option' => $option,
'codeErreur' => $this->errNumInpi,
'libErreur' => $this->errMsgInpi,
);
$this->iDb->insert('rncs_requetes', $tabInsert, true);
}
if ($prod['Presta']==12004)
// bilans image
$pregmatch=preg_match_all('/<ort\:_201 type="110">(?:.*)<ort\:_103000040 type="010">(.*)<\/ort:_103000040>(?:.*)<ort\:_103000452 type="010">(.*)<\/ort:_103000452>(?:.*)<ort\:_103000402 type="010">(.*)<\/ort:_103000402>(?:.*)<ort\:_103000403 type="010">(.*)<\/ort:_103000403>(?:.*)<ort\:_103000404 type="010">(.*)<\/ort:_103000404>(?:.*)<\/ort:_201>/Uis',$this->body, $matches);
elseif ($prod['Presta']==12003)
// actes image
$pregmatch=preg_match_all('/<ort\:_201 type="110">(?:.*)<ort\:_103000452 type="010">(.*)<\/ort:_103000452>(?:.*)<ort\:_103000402 type="010">(.*)<\/ort:_103000402>(?:.*)<ort\:_103000403 type="010">(.*)<\/ort:_103000403>(?:.*)<ort\:_103000404 type="010">(.*)<\/ort:_103000404>(?:.*)<\/ort:_201>/Uis',$this->body, $matches);
elseif ($prod['Presta']==2000)
// bilan simplifi<66>s ou normaux saisi
$pregmatch=preg_match('/<ort\:_2 type="110">(?:.*)<ort\:_2 type="110">(.*)<\/ort\:_2>(?:.*)<\/ort\:_2>/Uis',$this->body, $matches);
elseif ($prod['Presta']==12001)
// Fiche Identite
$pregmatch=preg_match('/<ort\:_2 type="110">(?:.*)<ort\:_2 type="110">(.*)<\/ort\:_2>(?:.*)<\/ort\:_2>/Uis',$this->body, $matches);
else {
// Prestation Vitrine
$tabVitrine=array();
// Bilans dispos
$tabBilans=array();
// Type de Bilans saisis disponible
for ($typeBilan=2000; $typeBilan<2004; $typeBilan++) {
$pregmatch=preg_match('/<ort:_'.$typeBilan.' type="110">(?:.*)<ort\:_120000026 type="010">(.*)<\/ort\:_120000026>(?:.*)<ort\:_120000027 type="010">(.*)<\/ort\:_120000027>(?:.*)<ort\:_120000028 type="010">(.*)<\/ort\:_120000028>(?:.*)<ort\:_120000029 type="010">(.*)<\/ort:_120000029>(?:.*)<ort\:_120000031 type="010">(.*)<\/ort\:_120000031>(?:.*)<ort\:_109104002 type="010">(.*)<\/ort\:_109104002>(?:.*)<ort\:_109104003 type="010">(.*)<\/ort\:_109104003>(.*)<\/ort:_'.$typeBilan.'>/Uis',$this->body, $matches);
$numProduit=$matches[1]; // 52
$numProduit=$matches[2]; // 52
$verProduit=$matches[3]; // 1
$libProduit=$matches[4]; // Comptes sociaux
$typProduit=$matches[5]; // 2000 : Bilans sociaux
// 2001 : Bilans consolid<69>s (70)
// 2002 : Bilans de banques (71)
// 2003 : Bilans d'assurances (72)
$synProduit=$matches[6]; // 109104002 : Disponibilit<69> synchrone
$asyProduit=$matches[7]; // 109104003 : Disponibilit<69> asynchrone
$pregmatch=preg_match_all('/<ort\:_103000038 type="010">(.*)<\/ort:_103000038>/Uis',$matches[8], $matches);
if ($typeBilan==2000) $tabBilans['N']=$matches[1]; // R<>el normal SC
elseif ($typeBilan==2001) $tabBilans['C']=$matches[1]; // Consolid<69> CC
elseif ($typeBilan==2002) $tabBilans['B']=$matches[1]; // Banque SB
elseif ($typeBilan==2003) $tabBilans['A']=$matches[1]; // Assurance SA
else $tabBilans['S']=$matches[1]; // R<>el Simplifi<66> SS
}
$tabVitrine['bilans']=$tabBilans;
// Fiche d'identit<69>
$pregmatch=preg_match('/<ort:_12001 type="110">(?:.*)<ort\:_120000027 type="010">(.*)<\/ort\:_120000027>(?:.*)<ort\:_120000028 type="010">(.*)<\/ort\:_120000028>(?:.*)<ort\:_120000029 type="010">(.*)<\/ort:_120000029>(?:.*)<ort\:_120000031 type="010">(.*)<\/ort\:_120000031>(?:.*)<ort\:_109104002 type="010">(.*)<\/ort\:_109104002>(?:.*)<ort\:_109104003 type="010">(.*)<\/ort\:_109104003>(?:.*)<ort\:_130000401 type="010">(.*)<\/ort\:_130000401>(?:.*)<\/ort:_12001>/Uis',$this->body, $matches);
$numProduit=$matches[1]; // 52
$verProduit=$matches[2]; // 1
$libProduit=$matches[3]; // Comptes sociaux
$typProduit=$matches[4]; // 2000 : Bilans sociaux
$synProduit=$matches[5]; // 109104002 : Disponibilit<69> synchrone
$asyProduit=$matches[6]; // 109104003 : Disponibilit<69> asynchrone
$nbEtab=$matches[7]; // Nombre d'<27>tablissements recens<6E>s
$tabVitrine['identite']=array( 'numProduit'=>$numProduit,
'verProduit'=>$verProduit,
'libProduit'=>$libProduit,
'typProduit'=>$typProduit,
'synProduit'=>$synProduit,
'asyProduit'=>$asyProduit,
'nbEtab' =>$nbEtab);
return $tabVitrine;
}
echo $this->body;
//print_r($tabBilans);
return $matches;
}
function getListeBilans($siren, $type='*') {
$tabVitrine=$this->getVitrine($siren);
foreach ($tabVitrine['bilans'] as $type => $tabMillesime) {
foreach ($tabMillesime as $num=>$millesime) {
$delta1=round((Wdate::dateT('d/m/Y','Y',$millesime)-Wdate::dateT('d/m/Y','Y',$tabMillesime[$num+1]))*12)
+round(Wdate::dateT('d/m/Y','m',$millesime)-Wdate::dateT('d/m/Y','m',$tabMillesime[$num+1]));
if ($delta1>23) $delta1=0;
$delta2=round((Wdate::dateT('d/m/Y','Y',$tabMillesime[$num+1])-Wdate::dateT('d/m/Y','Y',$tabMillesime[$num+2]))*12)
+round(Wdate::dateT('d/m/Y','m',$tabMillesime[$num+1])-Wdate::dateT('d/m/Y','m',$tabMillesime[$num+2]));
if ($delta2>23) $delta2=0;
$tabRet[$type.$millesime]=array( 'dateProvPartenaire'=>date('Ymd'),
'dureeExercice' =>$delta1,
'dateExercicePre' =>Wdate::dateT('d/m/Y','Ymd',$tabMillesime[$num+1]),
'dureeExercicePre' =>$delta2,
'monnaie' =>'EUR',
'source' =>100,
'ref' =>'',
);
}
}
return $tabRet;
}
function getBilan($siren, $millesime, $type='N') {
global $tabOrt2Sd;
$tabRet=$tabPostes=array();
if ($type=='N') $presta=2000;
elseif ($type=='C') $presta=2001;
elseif ($type=='B') $presta=2002;
elseif ($type=='A') $presta=2003;
$prod=array( 'Prod'=>'RNCS',
'Num'=>'52',
'Ver'=>'1',
'Presta'=>$presta,
'Millesime'=>Wdate::dateT('d/m/Y','mY',$millesime),
'Type'=>'QINF');
$ret=$this->query($siren, $prod);
/* $fp=fopen('/var/www/log/debugBilansRncs.log','a');
fwrite($fp, print_r($ret,true));
fclose($fp);*/
$pregmatch=preg_match_all('/<ort\:_(.*) type="010">(.*)<\/ort\:_(.*)>/Uis', $ret[1], $matches);
foreach ($matches[1] as $i=>$poste) {
//echo "$i : $poste<br/>";
if ('_'.$poste=='_103000040') { // CONSOLIDE
switch ($matches[2][$i]) {
case 'SC': $tabRet[$tabOrt2Sd['_'.$poste]]='N'; break;
case 'CC': $tabRet[$tabOrt2Sd['_'.$poste]]='C'; break;
case 'SB': $tabRet[$tabOrt2Sd['_'.$poste]]='B'; break;
case 'SA': $tabRet[$tabOrt2Sd['_'.$poste]]='A'; break;
case 'SS': $tabRet[$tabOrt2Sd['_'.$poste]]='S'; break;
default: break;
}
} elseif ('_'.$poste=='_103000214') { // MONNAIE_LIV_UNITE
switch ($matches[2][$i]*1) {
case 0: $tabRet[$tabOrt2Sd['_'.$poste]]=''; break;
case 3: $tabRet[$tabOrt2Sd['_'.$poste]]='k'; break;
case 6: $tabRet[$tabOrt2Sd['_'.$poste]]='m'; break;
default: break;
}
} elseif ('_'.$poste=='_130000001' || // SIREN
'_'.$poste=='_103000033' || // DATE_CLOTURE
'_'.$poste=='_103000023' || // DUREE_MOIS
'_'.$poste=='_103000202' || // MONNAIE_ORI
'_'.$poste=='_103000205' || // MONNAIE_ORI_UNITE
'_'.$poste=='_103000211' || // MONNAIE
'_'.$poste=='_103000029' || // AVIS_CAC
'_'.$poste=='_130000009') { // CODE_NAF
$tabRet[$tabOrt2Sd['_'.$poste]]=$matches[2][$i];
} else
$tabPostes[$tabOrt2Sd['_'.$poste]]=$matches[2][$i];
}
$tabRet['POSTES']=$tabPostes;
$tabRet['DATE_FRAICHE_BILAN']=date('Ymd');
$tabRet['TYPE_BILAN']=$tabRet['CONSOLIDE'];
//$tabRet['DATE_CLOTURE_PRE']
//$tabRet['DUREE_MOIS_PRE']
$fp=fopen('/var/www/log/debugBilansRncs.log','a');
fwrite($fp, print_r($tabRet,true));
fclose($fp);
return $tabRet;
}
function getIdentite($siren) {
$tabVitrine=$this->getVitrine($siren);
$fp=fopen('/var/www/log/debugVitrineRncs.log','a');
fwrite($fp, print_r($tabVitrine,true));
fclose($fp);
$prod=array( 'Prod'=>'RNCS',
'Num'=>$tabVitrine['identite']['numProduit'],
'Ver'=>$tabVitrine['identite']['verProduit'],
'Presta'=>12001,
'Type'=>'QINF');
$ret=$this->query($siren, $prod);
if ($this->errNumInpi>0 && $this->errMsgInpi<>'') {
return false;
} else {
$pregmatch=preg_match_all('/<ort\:_((?:1300|13011|13016|130100403).*) type="010">(.*)<\/ort\:_((?:1300|13011|13016|130100403).*)>/Uis', $ret[1], $matchesIden);
foreach ($matchesIden[1] as $i=>$rubrique) {
if ($rubrique==130000300) $tabIdentite['Nom']=$matchesIden[2][$i];
elseif ($rubrique==130000008) $tabIdentite['FJ']=$matchesIden[2][$i];
elseif ($rubrique==130000303) $tabIdentite['Sigle']=$matchesIden[2][$i];
elseif ($rubrique==130100015) $tabIdentite['Enseigne']=$matchesIden[2][$i];
elseif ($rubrique==130000500) $tabIdentite['CapitalMont']=$matchesIden[2][$i];
elseif ($rubrique==130000501) $tabIdentite['CapitalType']=$matchesIden[2][$i];
elseif ($rubrique==130000508) $tabIdentite['CapitalDev']=$matchesIden[2][$i];
elseif ($rubrique==130000509) $tabIdentite['CapitalUnite']=$matchesIden[2][$i];
elseif ($rubrique==130000513) $tabIdentite['CapitalMontCts']=$matchesIden[2][$i];
elseif ($rubrique==130000102) $tabIdentite['DateCrea']=$matchesIden[2][$i];
elseif ($rubrique==130001002) $tabIdentite['DateImma']=$matchesIden[2][$i];
elseif ($rubrique==130000013) $tabIdentite['CodeGreffe']=$matchesIden[2][$i];
elseif ($rubrique==130000014) $tabIdentite['NumRC']=$matchesIden[2][$i];
elseif ($rubrique==130001102) $tabIdentite['DateRad']=$matchesIden[2][$i];
elseif ($rubrique==130000025) $tabIdentite['Provisoire']=$matchesIden[2][$i];
elseif ($rubrique==130000401) $tabIdentite['NbEtab']=$matchesIden[2][$i];
}
/** DIRIGEANTS **/
$tabDir=array();
if (preg_match('/<ort\:_130300015 type="010">(.*)<\/ort:_130300015>(?:.*)<ort:_200 type="111">(.*)<\/ort\:_200>/Uis', $ret[1], $matchesDirs)) {
$nbDirs=$matchesDirs[1];
$strDir=$matchesDirs[2];
$strMatch= '<ort\:_210 type="110">(?:.*)'.
'<ort\:_130300005 type="010">(.*)<\/ort\:_130300005>(?:.*)'.
'<ort\:_130301003 type="010">(.*)<\/ort\:_130301003>(?:.*)'.
'<ort\:_130300016 type="010">(.*)<\/ort\:_130300016>(?:.*)'.
'<ort\:_130301006 type="010">(.*)<\/ort\:_130301006>(?:.*)'.
'<ort\:_130301007 type="010">(.*)<\/ort\:_130301007>(?:.*)'.
'<ort\:_130301009 type="010">(.*)<\/ort\:_130301009>(?:.*)'.
'<ort\:_130301004 type="010">(.*)<\/ort\:_130301004>(?:.*)'.
'<ort\:_130301008 type="010">(.*)<\/ort\:_130301008>(?:.*)'.
'<ort\:_130301012 type="010">(.*)<\/ort\:_130301012>(?:.*)'.
'<ort\:_130301100 type="010">(.*)<\/ort\:_130301100>(?:.*)'.
'<ort\:_130301102 type="010">(.*)<\/ort\:_130301102>(?:.*)'.
'<ort\:_130302002 type="010">(.*)<\/ort\:_130302002>(?:.*)'.
'<ort\:_130302003 type="010">(.*)<\/ort\:_130302003>(?:.*)'.
'<ort\:_130302004 type="010">(.*)<\/ort\:_130302004>(?:.*)<\/ort\:_210>';
$pregmatch=preg_match_all("/$strMatches/Uis", $strDir, $matchesDirs);
foreach ($matchesDirs[1] as $i=>$dir) {
$tabDir[$i]=array( 'Fonc'=>$dir[1],
'Sexe'=>$dir[2],
'Nom'=>$dir[3],
'Prenom'=>$dir[4],
'Prenom2'=>$dir[5],
'NomJF'=>$dir[6],
'NaissDept'=>$dir[7],
'NaissLieu'=>$dir[8],
'NaissNati'=>$dir[9],
'NaissDate'=>$dir[10],
'ReprNom'=>$dir[11],
'ReprPrenom'=>$dir[12],
'ReprPrenom2'=>$dir[13],
);
}
}
$fp=fopen('/var/www/log/debugIdentiteRncs.log','a');
fwrite($fp, print_r($matchesIden,true).EOL.print_r($matchesEtab,true).EOL.print_r($matchesDirs,true));
fclose($fp);
return $tabIdentite;
}
}
}
?>