batch/1.1/old/surveillanceDirSite.php
2013-06-19 08:24:49 +00:00

377 lines
19 KiB
PHP

#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
<?php
define('DATE_HEURE_SCRIPT', date('Ymd_His'));
/** @todo
**/
include_once(FWK_PATH.'common/chiffres.php');
include_once(FWK_PATH.'common/dates.php');
include_once(INCLUDE_PATH.'bodacc/classMBodacc.php');
include_once(INCLUDE_PATH.'insee/classMInsee.php');
include_once(FWK_PATH.'mail/sendMail.php');
$repProduction='/mnt/samba/partage/production/';
$modeTest=$envoiGroupe=$envoiGroupePre=false;
$ignoreDateDerExec=$retroActivite=false;
$tableSurveillance='surveillances_site';
//$modeTest=true;
$strInfoScript='Usage : '.basename($argv[0]). " [OPTION]
Envoi des messages de surveillance Dirigeants par email (site et WS uniquement).
Options :
-i Ne pas exécuter en réel (pas de MAJ des infos d'exécution et envoi des mails à lenaoury@gmail.com...)
";
$argv=$_SERVER['argv'];
if ($_SERVER['argc']>1)
{
for ($i=1; isset($argv[$i]); $i++) {
if (substr($argv[$i],0,1)=='-') {
switch (substr($argv[$i],1,1)) {
case 'i':
//$envoiGroupe=true;
$modeTest=true;
$tableSurveillance='surveillances_site_old';
break;
case '-':
case '?':
die($strInfoScript);
break;
default:
die('Option '. $argv[$i] . " inconnue !\n");
break;
}
}
}
}
$iDb=new WDB('jo');
$iDb2=new WDB('sdv1');
$nbUtilisateurs=$iDb2->select('utilisateurs u, clients c', 'u.id, u.idClient, LOWER(u.login) AS login, u.password, u.email, u.formatMail, u.lienExtranetMail, u.listeEven, c.typeScore', "u.idClient=c.id AND u.actif=1 AND u.deleted=0 AND c.actif='Oui'", true, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbUtilisateurs utilisateurs habilités à recevoir des surveillances...".EOL;
$tabFormat=$tabLienEx=$tabLstEve=$tabHash=$tabTypInd=array();
while ($uti=$iDb2->fetch(MYSQL_ASSOC)) {
switch ($uti['formatMail']) {
case 'txt2': // MAIL au format texte, 1 mail par envoi
case 'csv': // MAIL au format CSV, 1 mail par envoi
case 'txt1': // MAIL au format texte, 1 mail par annonce (format par défaut)
case 'pdf1': // MAIL au format PDF, 1 mail par envoi
$tabFormat['_'.$uti['login']]=$uti['formatMail'];
break;
default:
$tabFormat['_'.$uti['login']]='txt1';
break;
}
$tabLienEx['_'.$uti['login']]=$uti['lienExtranetMail'];
$tabClient['_'.$uti['login']]=$uti['idClient'];
$tabTypInd['_'.$uti['login']]=$uti['typeScore'];
$tabLstEve['_'.$uti['login']]=explode(';',trim($uti['listeEven']));
sort($tabLstEve['_'.$uti['login']]);
if (count($tabLstEve['_'.$uti['login']])==1 && $tabLstEve['_'.$uti['login']][0]=='')
$tabLstEve['_'.$uti['login']]=array();
$tabHash['_'.$uti['login']]=md5($uti['login'].'|'.$uti['password']);
}
//sort($tabFormat);
//print_r($tabFormat);die();
//print_r($tabTypInd);die();
$iBodacc=new MBodacc();
$iInsee=new MInsee();
echo date ('Y/m/d - H:i:s')." - Début du traitement d'envoi des surveillances Scores.\n";
$fields="b.id, b.siren, LOWER(TRIM(s.login)) AS login, LOWER(TRIM(s.email)) AS email, s.ref, s.dateAjout, s.dateDerEnvoi, b.adr_dep, b.typeDir, b.raisonSociale, b.dirSiren, b.dirRS, b.civilite, b.nom, b.prenom, b.naissance_nom, b.naissance_date, b.naissance_lieu, b.nat, b.adresse, b.fonction_code, b.fonction_lib, b.actif, b.dateFin, b.source, b.flux, b.cinf, b.idSirenage, b.dateInsert, b.dateUpdate";
$where ="s.source='dirigeants' AND s.siren>1000 AND s.siren=b.siren AND b.dateInsert>=s.dateAjout AND b.dateInsert>s.dateDerEnvoi /*OR b.dateUpdate>=s.dateAjout)*/ AND s.dateSuppr='0000-00-00' ";
$where.=" AND b.dateInsert>='2011-03-21 01:00:00' ";
$where.='GROUP BY login, email, ref, siren, dateAjout ';
$where.='ORDER BY s.login ASC, s.email ASC';
$tables="$tableSurveillance s, rncs_dirigeants b";
echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL;
$nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true);
echo date ('Y/m/d - H:i:s')." - Il y a $nbAnnonces surveillances Dirigeants à traiter...".EOL;
$emailPre=$loginPre=false;
//die();
require_once('/var/www/html/tests/pdf/html2pdf.class.php');
while ($annonce=$iDb->fetch(MYSQL_ASSOC)) {
$tabIdentite=$iInsee->getIdentiteLight($annonce['siren']);
$email=$annonce['email'];
$loginLu=$annonce['login'];
if (!isset($tabFormat['_'.$loginLu])) {
echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id']." non traitée pour cause de format indéfini pour $loginLu, $email (".$annonce['siren'].' - '.$tabIdentite['Nom'].")\n";
/** Avant de faire un continue, on initialise les variables précédentes obligatoires **/
/*$emailPre=$email;
$loginPre=$loginLu;
$envoiGroupePre=$envoiGroupe;
$conversionPdfPre=$conversionPdf;
$conversionCsvPre=$conversionCsv;*/
continue;
}
$conversionPdf=$conversionCsv=false;
if ($tabFormat['_'.$loginLu]=='txt2') $envoiGroupe=true;
elseif ($tabFormat['_'.$loginLu]=='csv') { $envoiGroupe=true; $conversionCsv=true; }
elseif ($tabFormat['_'.$loginLu]=='txt1') $envoiGroupe=false;
elseif ($tabFormat['_'.$loginLu]=='pdf1') { $envoiGroupe=true; $conversionPdf=true; }
else die(date('Y/m/d H:i:s')." - Erreur impossible : Format '".$tabFormat['_'.$loginLu]."' non géré pour $loginLu !");
echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id']." à traiter pour $loginLu, $email (".$annonce['siren'].' - '.$tabIdentite['Nom'].")\n";
/*
if (count($tabLstEve['_'.$loginLu])>0) { // L'utilisateur filtre ses évènements
$even=$annonce['insEVE'];
switch ($even) {
case 'M0C': $even2=0130; break;
case 'M0F': $even2=0430; break;
case 'M0R': $even2=0145; break;
case 'M00': $even2=0780; break;
case 'MAS': $even2=0661; break;
case 'MAC': $even2=0661; break;
case 'MSA': $even2=0780; break;
case 'MPF': $even2=0999; break;
default: $even2=$even*1; break;
}
$evenTrouve=false;
if (in_array($even2, $tabLstEve['_'.$loginLu]))
$evenTrouve=true;
if (!$evenTrouve) {
echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id'].' - Evènements hors périmètre client : '.$even.'/'.$even2."\n";
if (!$modeTest) {
$where="login='$loginLu' AND source='score' AND siren='".$annonce['siren']."'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('Ymd').'235959'), $where, true))
echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$loginLu, mail=$email, siren=".$annonce['siren'].', rsoc='.$tabIdentite['Nom']." ($where) !\n";
}
continue; // Aucun evènement souhaité par l'utilisateur n'est présent dans cette annonce
} else echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id']." - Evenements '$even/$even2' OK pour $loginLu, $email (".$annonce['siren'].' - '.$tabIdentite['Nom'].")\n";
} else */echo date('Y/m/d H:i:s').' - Annonce n°'.$annonce['id']." - Pas de filtre evenements pour $loginLu, $email (".$annonce['siren'].' - '.$tabIdentite['Nom'].")\n";
echo "Test $envoiGroupe vs $envoiGroupePre / Login $loginLu vs $loginPre / Email $email vs $emailPre\n";
//$saisie = trim(strtoupper(fgets(STDIN)));
if ( ($envoiGroupe||$envoiGroupePre) && // Envoi groupé demandé ET
( ($loginPre!=false && $loginLu!=$loginPre) || // Login différent OU
($emailPre!=false && $email!=$emailPre) ) // Email différent
) { /** Login souhaitant un seul email pour toutes les annonces **/
$emailEnvoi=$emailPre;
if ($modeTest) $emailEnvoi='lenaoury@gmail.com';
if ($conversionPdfPre) {
$html2pdf = new HTML2PDF('P','A4', 'fr');
$messagePdf='<page>'.str_replace("---------------------------------------------------------------------------",'</page><page>', strtr($message, array("\r\n"=>'<br/>'))).'</page>';
$html2pdf->WriteHTML($messagePdf);
$content=$html2pdf->Output('annonces.pdf', true);
$fichierPdf="/var/www/html/factures/pdf/dirigeants_$loginPre".'_'.date('Y-m-d').".pdf";
$fp=fopen($fichierPdf, 'w');
fwrite($fp, $content);
fclose($fp);
$tabAttached=array($fichierPdf);
} elseif ($conversionCsvPre) {
$tabAttached=array($fichierCsvPre);
} else
$tabAttached=array();
if(@sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance Dirigeants", $message, '', $tabAttached)) {
if ($envoiGroupePre) $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren='$siren'";
echo "UPDATE $tableSurveillance SET dateDerEnvoi=NOW() WHERE $where".EOL;
//if (!$modeTest) { // A
if ($envoiGroupePre) $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$loginPre' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren='$siren'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('YmdHis')), $where, true))
echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$loginPre, mail=$emailPre, siren=$siren,".implode(',',$tabSiren).', rsoc='.$tabIdentite['Nom']." ($where) !\n";
//} //A
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn a été envoyé à $emailPre.";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Dirigeants", $messageInfo, '', $tabAttached);
echo date('Y/m/d H:i:s')." - Les annonces n°$strIdAnn ont été envoyées à $emailPre.\n";
} else {
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $emailPre !!!";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Dirigeants - Echec Envoi !", $messageInfo, '', $tabAttached);
echo date('Y/m/d H:i:s')." - Les annonces n°$strIdAnn n'ont pas été envoyées à $emailPre.\n";
}
//$saisie = trim(strtoupper(fgets(STDIN)));
// Remise à banc du message
$message=$strIdAnn='';
$tabSiren=array();
}
// GESTION DE L'ANNONCE COURANTE
$siren=$annonce['siren'];
$sirenAff=implode(' ', str_split($siren,3));
//$nicAff=$annonce['nicEven'];
$rs=substr($tabIdentite['Nom'],0,30).'...';
//$even=$annonce['insEVE'];
$login=$annonce['login'];
$idAnn=$tabIdentite['id'];
if ($envoiGroupe==false)
$message="Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
else {
if ($emailPre==false && $loginPre==false) {
// Première annonce du mail
$message="Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
$strIdAnn="$idAnn ";
$tabSiren=array($siren);
} else {
// Nième annonce du mail
$message.= "Siren : $sirenAff\r\n".'Raison Sociale : '.$tabIdentite['Nom']."\r\n";
$strIdAnn.="$idAnn ";
$tabSiren[]=$siren;
}
}
if (trim($annonce['ref'])<>'') {
$message.='Votre référence : '.trim($annonce['ref'])."\r\n";
$message."\r\n";
$rs=substr($tabIdentite['Nom'],0,30).'... ('.trim($annonce['ref']).')';
}
$message.='Source : R.N.C.S. en date du '.WDate::dateT('Y-m-d','d/m/Y',$annonce['flux']).'. ';
if ($annonce['dateUpdate']>$annonce['dateInsert'])
$message.='Mise à jour en base S&D : '. WDate::dateT('Y-m-d','d/m/Y',$annonce['dateUpdate'])."\r\n";
else
$message.='Insertion en base S&D : '. WDate::dateT('Y-m-d','d/m/Y',$annonce['dateInsert'])."\r\n";
$message.="\r\n";
$clientId=$tabClient['_'.$login];
$message.="MODIFICATION DE L'ADMINISTRATION DE L'ENTREPRISE.\r\n";
$message.="\r\n";
//$message.="Siret du siège : $sirenAff ". $tabIdentite['Nic']."\r\n";
$message.="Adresse du siège : ". $tabIdentite['Adresse'].', '.$tabIdentite['CP'].' '.$tabIdentite['Ville']."\r\n";
$message.="Forme juridique : ". $tabIdentite['FJ_lib'].' ('.$tabIdentite['FJ'].")\r\n";
$message.="Activité de l'entreprise : ". $tabIdentite['NafEntLib'].' ('.$tabIdentite['NafEnt'].")\r\n";
if ($annonce['actif']==1) $strActif='Oui';
else $strActif='Non';
$message.="Etablissement actif : $strActif\r\n";
$message.="\r\n";
// $message.=print_r($annonce, true);
if ($tabLienEx["_$login"]==1) {
if (WS_VERSION==2)
$url="http://extranet.scores-decisions.com/dirigeant/liste/siret/$siren";
else
$url="http://extranet.scores-decisions.com/?page=dirigeants&action=logon&login=$login&siret=$siren&hach=".$tabHash["_$login"];
$message.="\r\nCliquez sur le lien suivant pour une consultation directe de l'évènement sur le site de Scores & Décisions :\r\n<div style=\"font-size: 6pt\"><a href=\"$url\">$url</a></div>\r\n";//d6c3f28eda29a2072b36872476a1d37a
}
$message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n";
if ($conversionCsv) {
$mel=substr(md5(preg_replace('/[^a-z0-9]/i','',$annonce['email'])),0,8);
$fichierCsv='/var/www/html/factures/pdf/dirigeants_'.$login.'_'.$mel.'_'.DATE_HEURE_SCRIPT.'.csv';
if (!file_exists($fichierCsv)) {
$fp=fopen($fichierCsv, 'a');
fwrite($fp, "Siren;Id Annonce;Référence;Parution;Bodacc;Date parution;Numéro Annonce;Type Annonce;Tribunal;Numéro RCS;Raison sociale;Chapitre;Evènement(s);Texte Annonce\r\n");
fclose($fp);
}
$fp=fopen($fichierCsv, 'a');
// Ecriture de la ligne CSV
fwrite($fp, "$siren;$idAnn;".trim($annonce['ref']).';'.$annonce['Bodacc_Num'].';'.substr($annonce['Rubrique_Bodacc'],0,1).';'.
WDate::dateT('Y-m-d','d/m/Y',$annonce['Bodacc_Date_Parution']).';'.$annonce['Num_Annonce'].";$cor;$libTri;".$annonce['Num_Annonce'].';'.
$tabIdentite['Nom'].';'.$annonce['Rubrique'].";$txtEven;$dateEve;".preg_replace('/ +/',' ', strtr($annonce['annonce'],array("\r"=>'', "\n"=>'', ";"=>' ', ","=>' ', '"'=>"'")))."\r\n");
fclose($fp);
}
if ($envoiGroupe==false) {
/** Profil souhaitant un email par annonce **/
$emailEnvoi=$email;
if ($modeTest) $emailEnvoi='lenaoury@gmail.com';
//$emailEnvoi='lenaoury@gmail.com';
if(@sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance Dirigeants $sirenAff $nicAff : $rs", $message)) {
if ($envoiGroupe) $where="login='$login' AND email='$emailPre' AND source='dirigeants' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' AND email='$email' AND source='dirigeants' AND siren='$siren'";
echo "UPDATE $tableSurveillance SET dateDerEnvoi=NOW() WHERE $where".EOL;
//if (!$modeTest) { // B
if ($envoiGroupe) $where="login='$login' AND email='$emailPre' AND source='dirigeants' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' AND email='$email' AND source='dirigeants' AND siren='$siren'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('YmdHis')), $where, true))
echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$login, mail=$emailPre/$email, siren=$siren,".implode(',',$tabSiren).', rsoc='.$tabIdentite['Nom']." ($where) !\n";
//} // B
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn a été envoyé à $email.";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Dirigeants $sirenAff $nicAff : $rs", $messageInfo);
echo date('Y/m/d H:i:s')." - L'annonce $idAnn a été envoyé à $email.\n";
} else {
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $email !!!";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Dirigeants $sirenAff $nicAff : $rs - Echec Envoi !", $messageInfo);
echo date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $email.\n";
}
//$saisie = trim(strtoupper(fgets(STDIN)));
}
$emailPre=$email;
$loginPre=$login;
$envoiGroupePre=$envoiGroupe;
$conversionPdfPre=$conversionPdf;
$conversionCsvPre=$conversionCsv;
$fichierCsvPre=$fichierCsv;
}
/** Envoi du dernier email pour les envois groupés **/
if (($envoiGroupe||$envoiGroupePre) && $emailPre<>false && $loginPre<>false) {
$emailEnvoi=$emailPre;
if ($modeTest) $emailEnvoi='lenaoury@gmail.com';
if ($conversionPdf) {
$html2pdf = new HTML2PDF('P','A4', 'fr');
$messagePdf='<page>'.str_replace("---------------------------------------------------------------------------",'</page><page>', strtr($message, array("\r\n"=>'<br/>'))).'</page>';
$html2pdf->WriteHTML($messagePdf);
$content=$html2pdf->Output('annonces.pdf', true);
$fichierPdf="/var/www/html/factures/pdf/dirigeants_$login".'_'.date('Y-m-d').".pdf";
$fp=fopen($fichierPdf, 'w');
fwrite($fp, $content);
fclose($fp);
$tabAttached=array($fichierPdf);
} elseif ($conversionCsv) {
$tabAttached=array($fichierCsv);
} else $tabAttached=array();
if(@sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance Dirigeants", $message, '', $tabAttached)) {
if ($envoiGroupe) $where="login='$login' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren='$siren'";
echo "UPDATE $tableSurveillance SET dateDerEnvoi=NOW() WHERE $where".EOL;
//if (!$modeTest) { // C
if ($envoiGroupe) $where="login='$login' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren IN (".implode(',',$tabSiren).")";
else $where="login='$login' /*AND email='$emailPre'*/ AND source='dirigeants' AND siren='$siren'";
if (!$iDb->update($tableSurveillance, array('dateDerEnvoi'=>date('YmdHis')), $where, true))
echo date('Y/m/d H:i:s')." - Erreur SQL ".mysql_errno().' : '.mysql_error().' sur UPDATE pour l\'annonce n°'.$annonce['id']. ", login=$login, mail=$emailPre, siren=$siren,".implode(',',$tabSiren).', rsoc='.$tabIdentite['Nom']." ($where) !\n";
//} // C
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - Les annonces $strIdAnn ont été envoyées à $emailPre.";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Dirigeants", $messageInfo, '', $tabAttached);
echo date('Y/m/d H:i:s')." - Les annonces $strIdAnn ont été envoyées à $emailPre.\n";
} else {
$messageInfo=$message."\r\n".date('Y/m/d H:i:s')." - L'annonce n°$idAnn n'a pas été envoyé à $emailPre !!!";
@sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Dirigeants - Echec Envoi !", $messageInfo, '', $tabAttached);
echo date('Y/m/d H:i:s')." - Les annonces $strIdAnn n'ont pas été envoyées à $emailPre.\n";
}
//$saisie = trim(strtoupper(fgets(STDIN)));
}
echo date ('Y/m/d - H:i:s')." - Fin du traitement d'envoi des surveillances Dirigeants.\n";
die();
?>