extranet/batch/getActes.php

203 lines
7.1 KiB
PHP
Raw Normal View History

#!/usr/bin/php -q
<?php
// Paramètres
if ( ( $argc > 1 )
|| in_array($argv[1], array('--help', '-help', '-h', '-?')) ) {
?>
Vérifie les actes numérisés reçus en provenance des Greffes.
Avec les options --help, -help, -h, et -?, vous obtiendrez cette aide.
Sans aucun paramètre, récupération des actes.
Utilisation :
<?php echo $argv[0]; ?> >> /vers/fichier.log
<?php
exit;
}
define ('PATH_DATA', '/var/www/data');
define ('ACTES_IGNUM_LOCAL_DIR', PATH_DATA.'/pdf/scan/');
define ('ACTES_IG_LOCAL_DIR', PATH_DATA.'/pdf/');
define ('ACTES_IGNUM_FTP_URL', 'ftp2.scores-decisions.com');
define ('ACTES_IGNUM_FTP_USER', 'mpc2500');
define ('ACTES_IGNUM_FTP_PASS', 'passmpc78');
require_once realpath(dirname(__FILE__) . '/../framework/fwk.php');
2009-02-20 15:30:11 +00:00
require_once realpath(dirname(__FILE__) . '/../config/config.inc');
2009-03-12 17:35:43 +00:00
require_once realpath(dirname(__FILE__) . '/mysql.php');
2009-02-20 15:30:11 +00:00
define('INCLUDE_PATH', realpath(dirname(__FILE__).'/../includes/') );
require_once FWK_PATH.'/common/ftp.php';
function sendMail($commande, $nomCible){
$subject = "Actes ou Statuts disponible pour ".$commande['siren'];
$message = "Le document commandé pour le siren ".$commande['siren']." est disponible en téléchargement sur le site de Scores & Décisions à l'adresse suivante :\r\n\r\n";
$message.= "http://extranet.scores-decisions.com/pdf/$nomCible\r\n";
$headers = 'From: infoslegales@scores-decisions.com' . "\r\n" .
'Reply-To: infoslegales@scores-decisions.com';
if ( mail($commande['emailCommande'], $subject, $message, $headers) ){
echo date ('Y/m/d - H:i:s').' - Un email a été envoyé à '.$commande['emailCommande']." pour la commande $nomCible.".EOL;
} else {
echo date ('Y/m/d - H:i:s').' - ERREUR : Impossible d\'envoyer l\'email à '.$commande['emailCommande']." pour la commande $nomCible.".EOL;
}
}
set_time_limit(0);
$eol = "\n";
2010-01-22 08:58:39 +00:00
/*
* Connexion à la base de données
2010-01-22 08:58:39 +00:00
*/
2009-02-20 15:30:11 +00:00
$con = mysql_pconnect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
if (!($con === false)) {
if (mysql_select_db(MYSQL_DB, $con) === false){
echo date ('Y/m/d - H:i:s') . ' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . $eol;
}
} else {
echo date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error(). $eol;
}
/*
* Liste des commandes non traités
*/
$tabCommandes = mysql_select('commandes', 'idCommande, idUser, login, emailCommande, siren, refDocument, typeCommande, dateCommande', 'dateReception=0', false, MYSQL_ASSOC);
$nbCommandes = count($tabCommandes);
$tabTmp = array();
foreach ($tabCommandes as $commande) {
if ($commande['typeCommande']=='C'){
$tabTmp['c'.$commande['idCommande']] = $commande;
} elseif ($commande['typeCommande']=='G' || $commande['typeCommande']==''){
$tabTmp['g'.$commande['idCommande']] = $commande;
}
}
$tabCommandes = $tabTmp;
unset($tabTmp);
echo date('Y/m/d - H:i:s') ." - Il y a $nbCommandes actes en attente de réception courrier ou numérisation !$eol";
/*
* Connexion au site FTP pour récupérer tout les documents scannées
* au format pdf et les placés dans ACTES_IGNUM_LOCAL_DIR
*/
echo date('Y/m/d - H:i:s') ." - Récupération des fichiers numérisés en attente de traitement...".EOL;
$ret = ftp_mget(
ACTES_IGNUM_FTP_URL,
ACTES_IGNUM_FTP_USER,
ACTES_IGNUM_FTP_PASS,
'*.pdf',
ACTES_IGNUM_LOCAL_DIR,
false);
if ($ret===false){
die (date ('Y/m/d - H:i:s')." - ERREUR : Récupération des actes numérisés impossible !".EOL);
} else {
echo date ('Y/m/d - H:i:s')." - FIN de la récupération des actes en FTP ($ret fichiers récupérés).".EOL;
}
2010-01-22 08:58:39 +00:00
/*
* Liste de tout les fichiers disponible dans le repertoire
* et associe une clé pour faciliter le tri
2010-01-22 08:58:39 +00:00
*/
echo date('Y/m/d - H:i:s') ." - Traitement des actes non encore traités !".EOL;
2010-01-22 08:58:39 +00:00
$tabFichiers = array();
$dh = opendir(ACTES_IGNUM_LOCAL_DIR);
while (false !== ($filename = readdir($dh))) {
2010-01-22 08:58:39 +00:00
if ($filename!='.' && $filename!='..' && strtolower(substr($filename, -4))=='.pdf')
{
2010-01-22 08:58:39 +00:00
list($ref, $indice) = explode('-',str_replace(array('G','.pdf'), array('',''), $filename));
if(empty($indice)) $indice = 0;
$tabFichiers[$ref.'-'.$indice] = strtolower($filename);
}
}
/*
* Tri des fichiers par ordre décroissant
* Les noms des fichiers sont incrémenté par 1
2010-01-22 08:58:39 +00:00
*/
krsort($tabFichiers);
/*
* Dans le cas ou il y a eu une erreur de scan, la production passe a nouveau le
* document dans le scanner et le fichier est envoyé sur le ftp
* Le document est nommé G[ref],G[ref]-1,G[ref]-2,.....pdf.
* On garde donc le dernier document scanné.
2010-01-22 08:58:39 +00:00
*/
$lastRef = '';
foreach($tabFichiers as $k => $val)
{
2010-01-22 08:58:39 +00:00
list($ref, $indice) = explode('-',$k);
if( $lastRef != $ref ) {
$tabFichiersTemp[] = $val;
}
$lastRef = $ref;
}
2010-01-22 08:58:39 +00:00
$tabFichiers = $tabFichiersTemp;
unset($tabFichiersTemp);
/*
* Association des documents numérisés avec les commandes
2010-01-22 08:58:39 +00:00
*/
$tabActes = array();
foreach ($tabFichiers as $k => $nomFichier)
2010-01-22 08:58:39 +00:00
{
if (strtolower(substr($nomFichier,0,1))=='g' ||
strtolower(substr($nomFichier,0,1))=='c'){
//Traitement des fichiers scannés une deuxième fois
2010-01-22 08:58:39 +00:00
$refFichier = str_replace('.pdf','', $nomFichier);
$refFichier = explode('-', $refFichier);
2010-02-01 13:55:20 +00:00
$numFichier = $refFichier[0];
2010-01-22 08:58:39 +00:00
//Detection de la référence fichier dans les commandes
if (isset($tabCommandes[$numFichier]) && is_array($tabCommandes[$numFichier]))
2010-01-22 08:58:39 +00:00
{
echo date ('Y/m/d - H:i:s')." - Fichier $nomFichier disponible pour traitement.".EOL;
2010-01-22 08:58:39 +00:00
$commande = $tabCommandes[$numFichier];
echo date ('Y/m/d - H:i:s')." - Le fichier $nomFichier correspond à la commande ".$commande['refDocument'].' de '.$commande['login'].'.'.EOL;
2010-01-22 08:58:39 +00:00
$siren = $commande['siren'];
$ref = $commande['refDocument'];
2010-01-22 08:58:39 +00:00
$nomCible = "acte-$siren-$ref.pdf";
if( preg_match('/^([0-9]{4}_).*?$/', $ref, $matches) )
{
$nomCible = "bilan-$siren-$ref.pdf";
}
//Le fichier existe déjà @todo : envoyé un mail quand même ?
if (file_exists(ACTES_IG_LOCAL_DIR.$nomCible))
{
echo date ('Y/m/d - H:i:s')." - Le fichier de la commande $nomCible est déjà disponible !".EOL;
/*
* Vérifier que la date de reception est à nulle
* pour renvoyer le mail et mettre à jour la date de reception
*/
if ($commande['dateReception']==0){
echo date ('Y/m/d - H:i:s')." - Mise à jour de la commmande".EOL;
mysql_update('commandes', array('dateReception'=>date('YmdHis')),'idCommande='.$commande['idCommande']);
if (trim($commande['emailCommande'])!=''){
sendMail($commande, $nomCible);
}
}
//Le fichier n'existe pas
} else {
if (rename(ACTES_IGNUM_LOCAL_DIR.$nomFichier, ACTES_IG_LOCAL_DIR.$nomCible)){
echo date ('Y/m/d - H:i:s')." - La commande $nomCible a été mise à disposition.".EOL;
2010-01-22 08:58:39 +00:00
//Envoi email
if (trim($commande['emailCommande'])!=''){
sendMail($commande, $nomCible);
}
//MAJ date de reception
2010-01-22 08:58:39 +00:00
mysql_update('commandes', array('dateReception'=>date('YmdHis')),'idCommande='.$commande['idCommande']);
//Impossible de renommer
} else {
echo 'Impossible de déplacer '.ACTES_IGNUM_LOCAL_DIR.$nomFichier.' en '.ACTES_IG_LOCAL_DIR.$nomCible.' !'.EOL;
}
} //Fin test fichier
}
} //Fin fichier référence gxxxx.pdf
} //Fin liste des fichiers
2009-06-08 09:22:59 +00:00
?>