<?php /** * crontab * 30 9 * * * /home/scores/batch/scripts/getInpiDecisions.php >> /home/scores/batch/shared/sources/log/getInpiDecisions.log * 00 19 * * * /home/scores/batch/getInpiDecisions.php >> /home/scores/batch/shared/sources/log/getInpiDecisionsSoir.log */ // --- 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'); $c = new Zend_Config($application->getOptions()); Zend_Registry::set('config', $c); $db = Zend_Db::factory($c->profil->db->metier); Zend_Db_Table::setDefaultAdapter($db); require_once APPLICATION_PATH.'/configs/config.php'; require_once 'framework/fwk.php'; require_once 'framework/common/chiffres.php'; require_once 'framework/common/dates.php'; require_once 'framework/mail/sendMail.php'; require_once 'Metier/insee/classMInsee.php'; require_once 'Metier/partenaires/classMRncs.php'; require_once 'Metier/partenaires/classMGreffes.php'; $table='jo.annonces'; function wsLog($service, $siret='', $ref='') {} define('RNCS_IMR_FTP_HOST', '194.5.119.252'); define('RNCS_IMR_FTP_LOGIN', 'score'); define('RNCS_IMR_FTP_PASS', '1eUauTJZ'); define('RNCS_IMR_FTP_DIR', '/var/home_ftp/score/Send/'); define('RNCS_IMR_FTP_LOCALDIR', '/home/scores/batch/shared/sources/rncs/extelia/'); define('RNCS_IMR_BACKUP_DIR', '/home/scores/batch/shared/sources/rncs/imr/'); $strInfoScript='Usage : '.basename($argv[0]). " <option> [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 "; global $iInsee; $iDb = new WDB(); $iDbR = new WDB(); $iInsee = new MInsee($iDb); $iRncs = new MRncs($iDb); $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 !'."\n"); break; } } else $tabFichLigneCmd[]=$argv[$i]; } echo date ('Y/m/d - H:i:s') . " - Début du traitement des évènements INPI"."\n"; $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..."."\n"; } // Date du dernier chargement INPI $tabTmp=$iDb->select('jo.rncs_chargements', "nomFichier, dateFlux, nbEvenAnn", "1 $strDateFlux ORDER BY dateFlux DESC LIMIT 0,1", true, MYSQL_ASSOC); echo "SELECT nomFichier, dateFlux, nbEvenAnn FROM jo.rncs_chargements WHERE 1 $strDateFlux ORDER BY dateFlux DESC LIMIT 0,1;".mysql_error()."\n"; $dateMaj=$tabTmp[0]['dateFlux']; $nomFichier=$tabTmp[0]['nomFichier']; $nbEvenAnn=$tabTmp[0]['nbEvenAnn']; echo "dateMaj='$dateMaj', nomFichier='$nomFichier', nbEvenAnn=$nbEvenAnn"."\n"; // Nombre d'évènements chargés echo "SELECT e.siren, e.codeInterne, e.dateDepot, e.codeEven, t.libEven, t.codEven, e.flux FROM jo.rncs_even e, jo.tabEvenRncs t WHERE e.flux='$dateMaj' AND e.codeEven=t.codeEven GROUP BY siren, dateDepot, codeEven;"."\n"; $nbEven=$iDbR->select( 'jo.rncs_even e, jo.tabEvenRncs t', "e.siren, e.codeInterne, e.dateDepot, e.codeEven, t.libEven, t.codEven, e.flux", "e.flux='$dateMaj' AND e.codeEven=t.codeEven GROUP BY siren, dateDepot, codeEven LIMIT 0,100000", true, MYSQL_ASSOC, true); echo mysql_error()."\n"; // Nombre d'évènements déjà mis à jour (complétés) $tabTmp=$iDb->select('jo.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 !."."\n"; } 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."."\n"; $sirenPre=false; $iEven=-1; while($even=$iDbR->fetch(MYSQL_ASSOC)) { $iEven++; if ($iEven<$iReprise) continue; echo "$iEven/$nbEven:".$even['siren'].' le '.$even['dateDepot'].': '.$even['codeEven'].' '.$even['libEven'].' ('.$even['codeInterne'].') ... '; $infogreffe = new SdMetier_Infogreffe_DocAC($even['siren']); $tabActes = $infogreffe->getList(true); foreach ( $tabActes as $acte ) { if ( $even['dateDepot'] == $acte->DepotDate ) { if ($acte->ActeDate=='0000-00-00') { $dateActe = $even['dateDepot']; } else { $dateActe = $acte->ActeDate; } echo $acte->infos; $infos = explode(' : ',$acte->infos); if ( count($infos)>1 ) { $acteNature = $infos[0]; } $tabInsert=array( 'siren' => $even['siren'], 'codeInterne' => $even['codeInterne'], 'dateDepot' => $even['dateDepot'], 'codeEven' => $even['codeEven'], 'flux' => $even['flux'], 'depot_num' => $acte->DepotNum, 'depot_date' => $acte->DepotDate, 'acte_num' => $acte->ActeNum, 'acte_date' => $dateActe, 'acte_type' => $acte->ActeType, 'acte_lib' => $acte->ActeTypeLabel, 'acte_pages' => $acte->ActeNumberOfPages, 'acte_nature' => $acte->ActeDecisionNature, 'acte_decision' => $acte->ActeDecisionLabel, 'collecte' => $even['codEven'], ); if ( $iDb->insert('jo.rncs_even_info', $tabInsert) ) { $nbInsert++; if ($acte->ActeDecisionNature<>'') $nbNatu++; if ($acte->ActeDecisionLabel<>'') $nbDeci++; } else { $nbDeja++; } } } echo "\n"; $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."."\n"; $iDb->update('jo.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..."."\n"; } $AnnDb=$iDb->select('jo.rncs_even_info j, jo.rncs_entrep e, jo.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 '%TUP%' OR j.acte_decision LIKE '%T.U.P%' OR j.acte_decision LIKE '%DISSOLUTION%' OR j.acte_nature LIKE '%DISSOLUTION%' OR j.acte_decision LIKE '%MISE%SOMMEIL%' OR j.acte_decision LIKE '%APPORT%PARTIEL%ACTIF%' OR j.acte_decision LIKE '%SCISSION%' ) ", false, MYSQL_ASSOC); $nbAnnonces=count($AnnDb); $message.="Il y a $nbAnnonces énements INPI IMR depuis le dernier chargement du $dateMaj :\r\n"; echo date('Y/m/d - H:i:s') ." - Il y a $nbAnnonces énements INPI IMR depuis le dernier chargement du $dateMaj."."\n"; 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('/SCISSION/i', $tabInsert['acte_decision'], $matches)) { if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $typeEven=2741; else $typeEven=2740; } elseif (preg_match('/TRANSMISSION.{1,3}UNIVERSELLE.{1,5}PATRIMOINE/i', $tabInsert['acte_decision'], $matches) || preg_match('/T.U.P/i', $tabInsert['acte_decision'], $matches) || preg_match('/\bTUP\b/i', $tabInsert['acte_decision'], $matches)) $typeEven=2620; elseif (preg_match('/APPORT.{1,3}PARTIEL.{1,5}ACTIF/i', $tabInsert['acte_decision'], $matches)) { if (preg_match('/PROJET/i', $tabInsert['acte_decision'], $matches)) $typeEven=2665; else $typeEven=2661; } 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/iu', $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( 'jo.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,false); foreach ($dirs as $nb=>$dir) { $tabInsert['complement'].=$dir['Titre'].' : '.@$dir['Civilite'].' '.$dir['Nom'].' '.$dir['Prenom']; if (($nb+1)<count($dirs)) $tabInsert['complement'].=', '; else $tabInsert['complement'].='. '; } } elseif ($typeEven==2320) { // RECONSTITUTION DE LA L'ACTIF NET if (preg_match('/MOITIE/i', $tabInsert['acte_nature'], $matches)) $typeEven=2321; } elseif ($typeEven==2203 && (preg_match('/SANS/i', $tabInsert['acte_nature'], $matches)) || (preg_match('/SANS/i', $tabInsert['acte_decision'], $matches)) ) // On ignore l'annonce continue; unset($tabInsert['codeEvenRncs']); unset($tabInsert['flux']); //if ($tabInsert['acte_nature']<>'') $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"."\n"; $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)"."\n".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..."."\n"; 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..."."\n"; } else { $nbAnnInsertE++; echo date('Y/m/d - H:i:s') ." - Ajout de l'évènement $typeEven en date du $dateJugement pour $siren..."."\n"; @$tabCptAnn[$typeEven]++; } } $message.=" $nbAnnInsertE ajouts et $nbAnnUpdateE mises à jours sur $nbAnnonces annonces.\r\n\r\n"; $message.=print_r(@$tabCptAnn, true); } /** * Mise à jour de la liste des actes greffe à partir des éléments consultés */ 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); if ( $nbActesQuoti > 0) { foreach ($tabActes as $i=>$acte) { echo date('Y/m/d - H:i:s')." - $i/$nbActesQuoti: Mise à jour de la liste des actes pour ".$acte['siren'].'... '; $infogreffe = new SdMetier_Infogreffe_DocAC($acte['siren']); $nbDepots = count($infogreffe->getList(true)); echo date('Y/m/d - H:i:s')."$nbDepots dépot(s)."."\n"; $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)."."\n"; } /** * Mise à jour de la liste des bilans greffe à partir des bilans déposés */ if ( $loadBilans ) { $tabTmp = $iDb->select('jo.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 !"."\n"; $bilansDep = $iDb->select('jo.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 !"."\n"; if ( $nbBilans > 0 ) { foreach ( $bilansDep as $iBilan=>$bil ) { echo date('Y/m/d - H:i:s') . " - $iBilan/$nbBilans: Mise à jour de la liste de bilans PDF pour ".$bil['siren']."... \n"; $infogreffe = new SdMetier_Infogreffe_DocBI($bil['siren']); $infogreffe->getList(true); } } $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."."\n"; } //Envoi du mail d'information sendMail('production@scores-decisions.com', 'suivi@scores-decisions.com', 'Chargement des informations Greffes', $message);