#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini select('bodacc_detail b, bodacc d' , 'b.id, b.siren, b.sirenValide, b.nic, b.nicValide, b.raisonSociale, b.nomCommercial, b.enseigne, b.sigle, b.nationalite, b.FJ, b.Capital, b.CapitalDev, b.adresse, b.adrNum, b.adrIndRep, b.adrTypVoie, b.adrLibVoie, b.adrComp1, b.adrComp2, b.codePostal, b.ville, b.adresseSiege, b.adrSiegeNum, b.adrSiegeIndRep, b.adrSiegeTypVoie, b.adrSiegeLibVoie, b.adrSiegeComp1, b.adrSiegeComp2, b.codePostalSiege, b.villeSiege, b.typeEven, b.commentaires, b.dateEffet, b.publication, b.publicationNom, b.publicationDate, b.dateDebutActivite, b.dateCessationActivite, b.dateCessationPaiement, b.dateJugement, b.VenteMt, b.VenteDev, b.bienAcqui, b.dateUpdate, d.annonce, d.balises', "b.id>=6683703 /*AND b.id<=7083703*/ AND b.Rubrique='ventes' AND b.siren>10000 AND /*(b.nic=0 OR */b.VenteMt=0 AND b.id=d.id AND balises LIKE '%%'", false, MYSQL_ASSOC, true); //"b.id BETWEEN 9424246 AND 10000000 AND b.Rubrique='ventes' AND b.siren>10000 AND (b.nic=0 /*OR b.nicValide=3 OR b.nicValide=4*/ OR b.VenteMt=0) AND b.id=d.id", false, MYSQL_ASSOC, true); echo "$nbRet annonces à traiter".EOL; $j=0; while($ann=$iDb->fetch(MYSQL_ASSOC)) { $j++; $tabUpdate=array('dateUpdate'=>$ann['dateUpdate']); $balises=$ann['balises']; $id=$ann['id']; $siren=$ann['siren']; $nic=$ann['nic']; $prix=$ann['VenteMt']*1; $strTmp=$origineFonds=''; if ($prix==0) { $vente_devise='?'; if (preg_match('/(.*)<\/origineFonds>/Uis',$balises,$matches)) { $strTmp=$origineFonds=$matches[1]; } if (preg_match('/(.*)<\/descriptif>/Uis',$balises,$matches)) { $strTmp.=$matches[1]; $origineFonds.=$matches[1]; } echo "$j/$nbRet - $id, $siren $nic : $origineFonds".EOL; if (preg_match("/(prix|stipul|montant|indémni|indemni|évalu|evalu|éstim|estim|EUR)/i", $strTmp)) { if (substr($strTmp,-1)=='.') $strTmp=trim(substr($strTmp,0,strlen($strTmp)-1)); if (preg_match("/(?:[\D]*)([0-9\.,\s]*)EUR/Ui", $strTmp, $tabTmp))/* || preg_match("/(.*)stipul.(?: de)([\D]*)([0-9\.,\s]*)([\D]*)/Ui", $strTmp, $tabTmp) || preg_match("/(.*)montant(?: de)([\D]*)([0-9\.,\s]*)([\D]*)/Ui", $strTmp, $tabTmp) || preg_match("/(.*)valu([\D]*)([0-9\.,\s]*)([\D]*)/Ui", $strTmp, $tabTmp) || preg_match("/(.*)stim([\D]*)([0-9\.,\s]*)([\D]*)/Ui", $strTmp, $tabTmp) || preg_match("/(.*)([\D]*) ([0-9\.,\s]*) (EUR)/Ui", $strTmp, $tabTmp) )*/ { $vente_montant=strtr($tabTmp[1], array(' '=>'', ','=>'.', chr(160)=>'')); if (substr($vente_montant,-3,1)=='.') { $vente_montant=str_replace('.','', substr($vente_montant,0,strlen($vente_montant)-3)); } elseif (substr($vente_montant,-4,1)=='.') { $vente_montant=str_replace('.','', $vente_montant); } //echo $vente_montant.EOL;continue; $vente_devise =trim($tabTmp[4]); }/* elseif (preg_match("/(.*)ind(.)mni([\D]*)([0-9\.,\s]*)([\D]*)/Ui", $strTmp, $tabTmp)) { $vente_montant=strtr($tabTmp[4], array(' '=>'', ','=>'.', chr(160)=>'')); //str_replace(' ','', str_replace(',','.',$tabTmp[4])); if (substr($vente_montant,-3,1)=='.') { $vente_montant=str_replace('.','', substr($vente_montant,0,strlen($vente_montant)-3)); } elseif (substr($vente_montant,-4,1)=='.') { $vente_montant=str_replace('.','', $vente_montant); } $vente_devise =trim($tabTmp[5]); }*/ if ( preg_match("/eur/i", $vente_devise) && !preg_match("/(wir|suisse|che)/i",$vente_devise) ) $vente_devise='EURO'; $devise=strtoupper(trim(str_replace('de ', '', str_replace('d\'', '', $vente_devise)))); if ($devise<>'') { if ($vente_montant*1<>0 && !$iBodacc->isDeviseBodacc($devise)) { echo ("ERREUR : Annonce $idann, devise de la vente inconnue = '$devise' (montant = $vente_montant) !".EOL.$texte.EOL); echo 'SIREN ............. '.implode(';',$tabAnnonces[$idann]['data']['siren']).EOL; echo 'Raison Sociale .... '.implode(';',$tabAnnonces[$idann]['data']['raisonSociale']).EOL; echo 'RC ................ '.implode(';',$tabAnnonces[$idann]['data']['RC']).EOL; echo 'Forme Juridique ... '.implode(';',$tabAnnonces[$idann]['data']['FJ']).EOL; echo chr(7); /** @todo Gérer les devises dont le nom peut être commun à plusieurs pays : ** DINARS DIRHAM DOLLARS COURONNES FRANC CFA ROUPIE LEU **/ if ($noQuestion) { die("Devise '$devise' inconnue !"); } else { while(true){ echo 'Saisir la devise pour "'.$devise.'" (0 pour ne rien saisir) ?'.EOL; $saisie = trim(strtoupper(fgets(STDIN))); if (strlen($saisie)==3) { echo 'Insertion de la devise en base'.EOL; if (!$iBodacc->addDeviseBodacc($devise, $saisie) && mysql_errno()<>1062) { echo date ('Y/m/d - H:i:s')." - ERREUR ".mysql_errno()." : Insertion des informations de chargement en base impossible :".EOL; echo date ('Y/m/d - H:i:s'). mysql_error(); die(); } $vente_devise=$saisie; break; } elseif (strlen($saisie)==1 && $saisie=='0') { $vente_devise='??'; break; } } } } else $vente_devise=$iBodacc->getDeviseBodacc($devise); } else $vente_devise='?'; } if ($vente_montant*1==0 && $origineFonds<>'') { print_r($tabAnnonces[$idann]); print_r($tabTmp); echo $ann['annonce'].EOL; echo "Montant non détecté, merci de saisir le "; if ($noQuestion) { die("Devise '$devise' inconnue !"); } else { while(true) { echo 'Montant de la vente en EURO ? (0 pour ne rien saisir) ?'.EOL; $saisie = trim(strtoupper(fgets(STDIN)))*1; $vente_montant=$saisie; $vente_devise='EUR'; break; } } } if ($vente_devise<>'?') { $tabUpdate['VenteMt']=$vente_montant; $tabUpdate['VenteDev']=$vente_devise; } } if ($ann['nic']==0 || $ann['nic']==3 || $ann['nic']==4) { $tabEt=$iInsee->getEtablissements($siren); if ($tabEt['nbReponsesTotal']==1) { // 1 seul établissement connu : on le valide en auto @todo : Vérifier adresser $tabUpdate['nic']=$tabEt['reponses'][0]['Nic']; $tabUpdate['nicValide']=3; $nbNicAuto++; } elseif ($tabEt['nbReponsesTotal']>1) { $nicTrouve=$nbNic=0; foreach ($tabEt['reponses'] as $iEt=>$tabIdEt) { $cpDem=$ann['codePostal']*1; $numDem=explode(' ', trim($ann['adresse'])); $numDem=$numDem[0]*1; if ($numDem==0) continue; //echo 'On trouve .. '. $tabIdEt['Nic'].' à '.$tabIdEt['Adresse'].', '.$tabIdEt['Adresse2'].', '.$tabIdEt['CP'].' '.$tabIdEt['Ville']; $cpRec=$tabIdEt['CP']*1; $numRec=substr($tabIdEt['Adresse'],0,4)*1; $numRec=$numRec[0]*1; if ($numRec==0) continue; if ($numDem==$numRec && $cpDem==$cpRec) { $nicTrouve=$tabIdEt['Nic']; $nbNic++; } } if ($nbNic==1) { $tabUpdate['nic']=$nicTrouve; $tabUpdate['nicValide']=4; $nbNicAuto++; } } } if (count($tabUpdate)>1) { print_r($tabUpdate); $iDb->update('bodacc_detail', $tabUpdate, "id=$id AND siren=$siren") or die(mysql_error()); echo "$j/$nbRet - $id, $siren $nicTrouve : $origineFonds, $vente_montant $vente_devise".EOL; } } ?>