#!/usr/bin/php -c/var/www/ws/batch/config/php_batch_sd.ini [FICHIERS] Chargement du/des informations complémentaires en provenance des actes Infogreffe (license RNCS IMR). Options : -d Mode debug (Verbosité au maximum) -q Ne pas mettre à jour les listes d'évènements commandés ce jour -b Ne pas mettre à jour les listes des nouveaux bilans PDF -j Ne pas collecter les évènements INPI (annonces JAL Inpi) -s:AAAAMMJJ Reprendre le chargement des annonces JAL Inpi à compter du AAAAMMJJ Reprendre les actes INPI du AAAAMMJJ -i:XXX Reprendre les accès aux évènements Infogreffe à la ligne XXX "; $iDb=new WDB(); $iDbR=new WDB(''); global $iInsee; $iInsee=new MInsee(); $iRncs=new MRncs(); $iGreffes=new MGreffes(); //$iWs=new WsEntreprise(); $nbInsert=$nbDeja=0; $nbNatu=$nbDeci=0; $modeDebug=false; // Par défaut, pas de message de debug $iReprise=false; // Reprendre les accès Infogreffe à la ligne d'évènenement nouveaux reçu XXX $message=''; // Initialisation du contenu du message d'information $loadInpiLocal=true; // Par défaut on charge les évènements INPI (génération des annonces JAL) $jourStock=0; // Jour du stock SSAMMJJ (génération des annonces JAL à partir du ...) $loadActesDuJour=true; // Par défaut on charge les listes d'évènements commandés ce jour par l'extranet $loadBilans=true; // Par défaut on charge les listes de bilans IMAGES disponibles $argv=$_SERVER['argv']; for ($i=1,$j=0; isset($argv[$i]); $i++) { if (substr($argv[$i],0,1)=='-') { switch (substr($argv[$i],1,1)) { case 'd': $modeDebug=true; break; case 's': $jourStock=substr($argv[$i],3,8); break; case 'j': $loadInpiLocal=false; break; case 'q': $loadActesDuJour=false; break; case 'b': $loadBilans=false; break; case 'i': $iReprise=substr($argv[$i],3); break; case '-': case '?': die($strInfoScript); break; default: die('Option '. $argv[$i] . ' inconnue !'.EOL); break; } } else $tabFichLigneCmd[]=$argv[$i]; } echo date ('Y/m/d - H:i:s') . " - Début du traitement des évènements INPI".EOL; $strDateFlux=''; if ($jourStock>0) { $dateMaj=WDate::dateT('Ymd', 'Y-m-d', $jourStock); $strDateFlux=" AND dateFlux='$dateMaj' "; $message.="Forçage du dernier chargement de la collecte INPI en date du $dateMaj...\r\n"; echo date ('Y/m/d - H:i:s') . " - Forçage de l'accès aux évènements Infogreffe en date du $dateMaj...".EOL; } // Date du dernier chargement INPI $tabTmp=$iDb->select('rncs_chargements', "nomFichier, dateFlux, nbEvenAnn", "1 $strDateFlux ORDER BY dateFlux DESC LIMIT 0,1", true, MYSQL_ASSOC); echo "SELECT nomFichier, dateFlux, nbEvenAnn FROM rncs_chargements WHERE 1 $strDateFlux ORDER BY dateFlux DESC LIMIT 0,1;".mysql_error().EOL; $dateMaj=$tabTmp[0]['dateFlux']; $nomFichier=$tabTmp[0]['nomFichier']; $nbEvenAnn=$tabTmp[0]['nbEvenAnn']; echo "dateMaj='$dateMaj', nomFichier='$nomFichier', nbEvenAnn=$nbEvenAnn".EOL; /* $iDb->update('rncs_chargements', array(''=>@$iEven*1), "nomFichier='$nomFichier'");*/ // Nombre d'évènements chargés echo "SELECT e.siren, e.codeInterne, e.dateDepot, e.codeEven, t.libEven, t.codEven, e.flux FROM rncs_even e, tabEvenRncs t WHERE e.flux='$dateMaj' AND e.codeEven=t.codeEven /*AND codEven>0*/ GROUP BY siren, dateDepot, codeEven;".EOL; $nbEven=$iDbR->select( 'rncs_even e, tabEvenRncs t', "e.siren, e.codeInterne, e.dateDepot, e.codeEven, t.libEven, t.codEven, e.flux", "e.flux='$dateMaj' AND e.codeEven=t.codeEven /*AND codEven>0*/ GROUP BY siren, dateDepot, codeEven LIMIT 0,100000", true, MYSQL_ASSOC, true); echo mysql_error(); // Nombre d'évènements déjà mis à jour (complétés) $tabTmp=$iDb->select('rncs_even_info', "count(*) AS nb", "flux='$dateMaj'", true, MYSQL_ASSOC); $nbEvenMaj=$tabTmp[0]['nb']; if ($nbEvenMaj>$nbEven && !$iReprise && $nbEvenAnn>0) { $message.="Le dernier chargement INPI date du $dateMaj et contient $nbEvenMaj évènements déjà mis à jour sur les $nbEven évènements du jour !\r\n"; echo date ('Y/m/d - H:i:s') . " - Le dernier chargement INPI date du $dateMaj et contient $nbEvenMaj évènements déjà mis à jour sur les $nbEven évènements du jour !.".EOL; //die('ici1'); } else { $message.="Le dernier chargement INPI date du $dateMaj et contient $nbEven nouveaux évènements dont $nbEvenMaj à jour.\r\n"; echo date ('Y/m/d - H:i:s') . " - Le dernier chargement INPI date du $dateMaj et contient $nbEven nouveaux évènements dont $nbEvenMaj à jour.".EOL; //die('ici2'); $sirenPre=false; $iEven=-1; while($even=$iDbR->fetch(MYSQL_ASSOC)) { $iEven++; //foreach ($AnnDb as $iEven=>$even) { if ($iEven<$iReprise) continue; echo "$iEven/$nbEven:".$even['siren'].' le '.$even['dateDepot'].': '.$even['codeEven'].' '.$even['libEven'].' ('.$even['codeInterne'].') ... '; $tabActes=@$iGreffes->getListeActes($even['siren']); foreach ($tabActes as $acte) { //echo $even['siren'].' - '.$even['dateDepot'].'='.$acte['depot_date'].EOL; if ($even['dateDepot']==$acte['depot_date']) { echo $acte['acte_nature'].' - '.$acte['acte_decision']; if ($acte['acte_date']=='0000-00-00') $dateActe=$even['dateDepot']; else $dateActe=$acte['acte_date']; $tabInsert=array( 'siren' => $even['siren'], 'codeInterne' => $even['codeInterne'], 'dateDepot' => $even['dateDepot'], 'codeEven' => $even['codeEven'], 'flux' => $even['flux'], 'depot_num' => $acte['depot_num'], 'depot_date' => $acte['depot_date'], 'acte_num' => $acte['acte_num'], 'acte_date' => $dateActe, 'acte_type' => $acte['acte_type'], 'acte_lib' => $acte['acte_lib'], 'acte_pages' => $acte['acte_pages'], 'acte_nature' => $acte['acte_nature'], 'acte_decision' => $acte['acte_decision'], 'collecte' => $even['codEven'], ); if ($iDb->insert('rncs_even_info', $tabInsert)) { $nbInsert++; if ($acte['acte_nature']<>'') $nbNatu++; if ($acte['acte_decision']<>'') $nbDeci++; } else $nbDeja++; } //print_r($acte); } echo EOL; // if (!$iGreffes->enCache && $sirenPre<>$even['siren']) randsleep(1,3); $sirenPre=$even['siren']; } $message.="$nbInsert évènements avec compléments ajoutés et $nbDeja évènements déjà en base ($nbNatu natures et $nbDeci décisions.\r\n"; echo date('Y/m/d - H:i:s') ." - $nbInsert évènements avec compléments ajoutés et $nbDeja évènements déjà en base ($nbNatu natures et $nbDeci décisions.".EOL; $iDb->update('rncs_chargements', array('nbEvenAnn'=>@$iEven*1), "nomFichier='$nomFichier'"); } if ($loadInpiLocal) { /** ** Evènements importants en collecte INPI **/ if ($jourStock>0) { $dateMaj=WDate::dateT('Ymd', 'Y-m-d', $jourStock).' 00:00:00'; $message.="Forçage du dernier chargement de la collecte INPI en date du $dateMaj...\r\n"; echo date ('Y/m/d - H:i:s') . " - Forçage du dernier chargement de la collecte INPI en date du $dateMaj...".EOL; } $AnnDb=$iDb->select('rncs_even_info j, rncs_entrep e, tabEvenRncs l', "j.siren, e.sirenValide, l.codEven AS typeEven, j.acte_date AS dateJugement, j.depot_date AS dateSource, j.dateInsert, 'PP' AS source, e.triCode AS tribunal, e.raisonSociale, l.codeEven AS codeEvenRncs, j.acte_nature, j.acte_decision, e.flux", "j.dateInsert>'$dateMaj' AND j.siren=e.siren AND DATEDIFF(NOW(), j.dateDepot)<=60 AND j.codeEven=l.codeEven AND (l.codEven>0 OR j.acte_decision LIKE '%FUSION%' OR j.acte_decision LIKE '%ABSORPTION%' OR j.acte_decision LIKE '%TRANSMISSION%UNIVERSELLE%PATRIMOINE%' OR j.acte_decision LIKE '%DISSOLUTION%' OR j.acte_nature LIKE '%DISSOLUTION%' OR j.acte_decision LIKE '%MISE%SOMMEIL%' ) ", false, MYSQL_ASSOC); $nbAnnonces=count($AnnDb); $message.="Il y a $nbAnnonces évènements INPI IMR depuis le dernier chargement du $dateMaj :\r\n"; echo date('Y/m/d - H:i:s') ." - Il y a $nbAnnonces évènements INPI IMR depuis le dernier chargement du $dateMaj.".EOL; foreach ($AnnDb as $i=>$tabInsert) { $siren=$tabInsert['siren']; $dateJugement=$tabInsert['dateJugement']; if ($dateJugement=='0000-00-00') $tabInsert['dateJugement']=$tabInsert['dateSource']; $typeEven=$tabInsert['typeEven']*1; $strEven=''; if ($typeEven==0) {//projet de fusion par absorption if (preg_match('/(FUSION|ABSORPTION)/i', $tabInsert['acte_decision'], $matches)) { if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $typeEven=2726; else $typeEven=2725; } elseif (preg_match('/TRANSMISSION.{1,3}UNIVERSELLE.{1,5}PATRIMOINE/i', $tabInsert['acte_decision'], $matches)) $typeEven=2620; elseif (preg_match('/DISSOLUTION/i', $tabInsert['acte_decision'], $matches) || preg_match('/DISSOLUTION/i', $tabInsert['acte_nature'], $matches) ) $typeEven=2203; elseif (preg_match('/MISE.{1,9}SOMMEIL/i', $tabInsert['acte_decision'], $matches)) { if (preg_match('/REPRISE/i', $tabInsert['acte_decision'], $matches)) $typeEven=2316; else $typeEven=2206; } } elseif (preg_match('/(FUSION|ABSORPTION)/i', $tabInsert['acte_decision'], $matches)) { if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $strEven=2726; else $strEven=2725; } $tabInsert['complement']=''; if ($typeEven==2100 || $typeEven==2101 || $typeEven==2102) { // Modification de capital $tabIdentite=$iRncs->getInfosEntrep($siren); $tabInsert['montant']=$tabIdentite['capital']; //$tabInsert['actionsNb'] =''; /** @todo Rechercher l'ancien capital **/ } elseif ($typeEven==2305) { // Modification de la dénomination $tabIdentite=$iRncs->getInfosEntrep($siren); $tabInsert['complement'].="Nouvelle dénomination : ".$tabIdentite['raisonSociale'].'. '; // Recherche de l'ancienne RS $dateFlux=$tabInsert['flux']; $rep=$iDb->select( 'rncs_modifs', 'siren, `table`, champs, valeur, flux, dateInsert', "siren=$siren AND type='raisonSociale' AND `table`='rncs_entrep' AND flux<='$dateFlux' ORDER BY flux DESC LIMIT 0,1", false, MYSQL_ASSOC); $modif=@trim($rep[0]['valeur']).''; if ($modif<>'') $tabInsert['complement'].="Ancienne dénomination : $modif. "; if ($tabIdentite['sigle']<>'') $tabInsert['complement'].="Sigle : ".$tabIdentite['sigle'].'. '; } elseif ($typeEven==2307) { // Modification de la forme juridique $tabIdentite=$iRncs->getInfosEntrep($siren); $tabInsert['nouvFJ']=$tabIdentite['cj']; /** @todo Rechercher l'ancienne FJ **/ } elseif ($typeEven==2315) { switch ($tabInsert['codeEvenRncs']*1) { case 34: $tabInsert['complement'].='Changement de Gérant : '; break; case 37: $tabInsert['complement'].='Changement de Président : '; break; case 40: $tabInsert['complement'].='Modification du Conseil d\'Administration : '; break; case 81: $tabInsert['complement'].='Changement de Commissaire aux Comptes : '; break; default: $tabInsert['complement'].='Administration : '; break; } $dirs=$iInsee->getDirigeants($siren); foreach ($dirs as $nb=>$dir) { $tabInsert['complement'].=$dir['Titre'].' : '.@$dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']; if (($nb+1)'') $tabInsert['complement'].=$tabInsert['acte_nature'].' '; if ($tabInsert['acte_decision']<>'') $tabInsert['complement'].=strtolower($tabInsert['acte_decision']).' '; unset($tabInsert['acte_nature']); unset($tabInsert['acte_decision']); if ($strEven<>'') $tabInsert['strEven']=$strEven; //echo "$siren $dateJugement $typeEven".EOL; $tabTmp=@$iInsee->getIdentiteLight($tabInsert['siren']); $tabInsert['typeEven'] = $typeEven; if ($typeEven==0) { print_r($tabInsert); sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement des évènements Greffes', "Erreur typeEven=0 ligne n°$i ($dateMaj)".EOL.print_r($tabInsert,true)); //die(); } $tabInsert['adresse'] = $tabTmp['Adresse']; $tabInsert['codePostal'] = $tabTmp['CP']; $tabInsert['ville'] = $tabTmp['Ville']; if (!$iDb->insert($table, $tabInsert)) { if (mysql_errno()==1062) { $tabTmp=$iDb->select($table, 'id, siren, typeEven, dateJugement, inter1type, inter1id, inter1nom, inter2type, inter2id, inter2nom, dateSource, dateInsert, source, tribunal, raisonSociale',"siren=$siren AND dateJugement='$dateJugement' AND typeEven=$typeEven", false, MYSQL_ASSOC); $tabEnbase=@$tabTmp[0]; if ($tabEnbase['source']=='PC') { unset($tabInsert['source']); unset($tabInsert['dateInsert']); if (!$iDb->update($table, $tabInsert,"siren=$siren AND dateJugement='$dateJugement' AND typeEven=$typeEven", false, MYSQL_ASSOC)) echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de la mise à jour de l'évènement $typeEven en date du $dateJugement pour $siren...".EOL; else $nbAnnUpdateE++; } } else echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .' : '. mysql_error() ." lors de l'ajout de l'évènement $typeEven en date du $dateJugement pour $siren...".EOL; } else { $nbAnnInsertE++; echo date('Y/m/d - H:i:s') ." - Ajout de l'évènement $typeEven en date du $dateJugement pour $siren...".EOL; @$tabCptAnn[$typeEven]++; } } $message.=" $nbAnnInsertE ajouts et $nbAnnUpdateE mises à jours sur $nbAnnonces annonces.\r\n\r\n".EOL; $message.=EOL.print_r(@$tabCptAnn, true); } if ($loadActesDuJour) { $today=date('Y-m-d').' 00:00:00'; $nbDepotsTot=0; $tabActes=$iDb->select( 'sdv1.logs', "siren", "`page`='greffe_actes' AND dateHeure>='$today' GROUP BY siren", false, MYSQL_ASSOC); shuffle($tabActes); $nbActesQuoti=count($tabActes); foreach ($tabActes as $i=>$acte) { echo "$i/$nbActesQuoti: Mise à jour de la liste des actes pour ".$acte['siren'].'... '; $nbDepots=count(@$iGreffes->getListeActes($acte['siren'])); echo "$nbDepots dépot(s).".EOL; // if (!$iGreffes->enCache) randsleep(1,3); $nbDepotsTot+=$nbDepots; } $message.="$nbActesQuoti listes d'évènements mises à jours pour un total de $nbDepotsTot dépots (listes du jour).\r\n"; echo date('Y/m/d - H:i:s') ." - $nbActesQuoti listes d'évènements mises à jours pour un total de $nbDepotsTot dépots (listes du jour).".EOL; } if ($loadBilans) { $tabTmp=$iDb->select('bilans_deposes','MAX(DATE(dateInsert)) AS lastMAJ', '1', true, MYSQL_ASSOC); $lastUpdate=$tabTmp[0]['lastMAJ']; $message.="La dernière mise à jour des bilans Greffes date du $lastUpdate !\r\n"; echo date ('Y/m/d - H:i:s') . " - La dernière mise à jour des bilans Greffes date du $lastUpdate !".EOL; $bilansDep=$iDb->select('bilans_deposes', "siren, nicSiege, dateProvPartenaire, dateExercice, dureeExercice, monnaie, chiffreAffaire", "dateInsert>'$lastUpdate 00:00:00'", true, MYSQL_ASSOC); echo mysql_error(); $nbBilans=count($bilansDep); $message.="Il y a $nbBilans listes de bilans PDF à mettre à jour !\r\n"; echo date ('Y/m/d - H:i:s') . " - Il y a $nbBilans listes de bilans PDF à mettre à jour !".EOL; foreach ($bilansDep as $iBilan=>$bil) { $tabActes=@$iGreffes->getBilansImages($bil['siren']); // if (!$iGreffes->enCache) randsleep(1,3); } $message.="Fin de la mise à jour des listes de bilans PDF.\r\n"; echo date ('Y/m/d - H:i:s') . " - Fin de la mise à jour des listes de bilans PDF.".EOL; /** @todo Charger les listes de bilans commandés ce jour **/ } sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement des informations Greffes', $message); die(); ?>