extranet/batch/greffeCmdTelechargement.php

170 lines
5.4 KiB
PHP
Raw Normal View History

2011-12-09 08:01:53 +00:00
#!/usr/bin/php -q
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
try {
$opts = new Zend_Console_Getopt(
//Options
array(
'help|?' => "Affiche l'aide.",
'reprise' => "Reprise des actes en erreur de moins de 120 heures",
'rapport' => "Envoi d'un email listant les commandes en erreur à J-1",
'rapportcomplet' => "Envoi d'un email listant toutes les commandes en erreur",
));
$opts->parse();
} catch (Zend_Console_Getopt_Exception $e) {
echo $e->getUsageMessage();
exit;
}
/**
* Usage
*/
if(count($opts->getOptions())==0 || isset($opts->help))
{
echo "Reprise de commande InfoGreffe par le WebService.";
echo "\n\n";
echo $opts->getUsageMessage();
echo "\n";
exit;
}
$configuration = new Zend_Config_Ini(APPLICATION_PATH . '/configs/configuration.ini');
define ('PATH_DATA', $configuration->path->data);
/**
* Connexion à la base de données
*/
$dbConfig = $configuration->databases;
$db = Zend_Db::factory($dbConfig->db->sdv1);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
if ( isset($opts->reprise) )
{
$commandesM = new Application_Model_CommandesErreur();
$sql = $commandesM->select()->where("erreur!='' AND dateCommande > DATE_SUB(NOW(),INTERVAL 120 HOUR)");
$repErreur = $commandesM->fetchAll($sql);
if (count($repErreur)==0) exit;
foreach($repErreur as $cmd)
{
require_once 'Scores/Infogreffe.php';
$infogreffe = new Infogreffe();
switch($cmd->type){
case 'acte':
$fichier = $infogreffe->acteFilename($cmd->siren, $cmd->ref);
break;
case 'bilan':
$fichier = $infogreffe->bilanFilename($cmd->siren, $cmd->ref);
break;
}
$dl = $infogreffe->dl($fichier, $cmd->url, false);
if( $dl ) {
$data = array('erreur' => '', 'dateReception' => date('Y-m-d H:i:s'));
$where = "siren='".$cmd->siren."' AND type='".$cmd->type."' AND ref='".$cmd->ref."' AND dateCommande='".$cmd->dateCommande."'";
$commandesM->update($data, $where);
}
}
}
if ( isset($opts->rapport) || isset($opts->rapportcomplet) )
{
$commandesM = new Application_Model_CommandesErreur();
if (isset($opts->rapportcomplet)) {
$sql = $commandesM->select()->where("erreur!='' AND dateReception='0000-00-00 00:00:00' ORDER BY dateCommande ASC");
$sujet = "[Commandes Greffe - Erreur WebService] - Rapport Complet";
} else {
$timestamp = mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
$hier = date('Y-m-d', $timestamp);
$sujet = "[Commandes Greffe - Erreur WebService] - ".$hier;
$sql = $commandesM->select()->where("(dateCommande BETWEEN '".$hier." 00:00:00' AND '".$hier." 23:59:59') AND erreur!='' AND dateReception='0000-00-00 00:00:00' ORDER BY dateCommande ASC");
}
$repErreur = $commandesM->fetchAll($sql);
$emailTxt = '<b><u>Commandes Greffe - Erreur WebService</u></b>';
$emailTxt.= '<br/>';
if (count($repErreur)==0) {
$emailtTxt.= "Aucune commande en erreur !";
} else {
$emailTxt.= '<table border="1" style="border:1px solid; margin:5px; border-collapse:collapse;">';
$emailTxt.= '<thead>';
$emailTxt.= '<tr>';
$emailTxt.= '<th>Siren</th>';
$emailTxt.= '<th>Type</th>';
$emailTxt.= '<th>Ref</th>';
$emailTxt.= '<th>Date de commande</th>';
$emailTxt.= '<th>URL</th>';
$emailTxt.= '<th>Erreur</th>';
$emailTxt.= '</tr>';
$emailTxt.= '</thead>';
$emailTxt.= '<tbody>';
foreach($repErreur as $cmd)
{
require_once 'Scores/Infogreffe.php';
$infogreffe = new Infogreffe();
switch($cmd->type){
case 'acte':
$fichier = $infogreffe->acteFilename($cmd->siren, $cmd->ref);
break;
case 'bilan':
$fichier = $infogreffe->bilanFilename($cmd->siren, $cmd->ref);
break;
}
//Le fichier existe, alors on a résolu le problème (mauellement ?)
if( file_exists(PATH_DATA . '/pdf/' . $fichier) ) {
$data = array('erreur' => '', 'dateReception' => date('Y-m-d H:i:s'));
$where = "siren='".$cmd->siren."' AND type='".$cmd->type."' AND ref='".$cmd->ref."' AND dateCommande='".$cmd->dateCommande."'";
$commandesM->update($data, $where);
} else {
//Lister les fichier en erreur
$emailTxt.= '<tr>';
$emailTxt.= '<td style="padding:5px">'.$cmd->siren.'</td>';
$emailTxt.= '<td style="padding:5px">'.$cmd->type.'</a></td>';
$emailTxt.= '<td style="padding:5px">'.$cmd->ref.'</a></td>';
$emailTxt.= '<td style="padding:5px">'.$cmd->dateCommande.'</td>';
$emailTxt.= '<td style="padding:5px">'.$cmd->url.'</td>';
$emailTxt.= '<td style="padding:5px">'.$cmd->erreur.'</td>';
$emailTxt.= '</tr>';
}
}
$emailTxt.= '</tbody>';
$emailTxt.= '</table>';
$emailTxt.= '<br/>';
$emailTxt = utf8_encode($emailTxt);
}
//Envoi mail
require_once 'Scores/Mail.php';
$mail = new Mail();
$mail->setFrom('production');
$mail->addTo('production@scores-decisions.com', 'Pieces');
$mail->addTo('supportdev@scores-decisions.com', 'Support');
$mail->setSubject($sujet);
$mail->setBodyTexte($emailTxt);
$mail->send();
}