Rollback si le fichier contient des datas erronnees

This commit is contained in:
Rodolphe Quiedeville 2007-07-11 18:14:01 +00:00
parent bdc24d8cef
commit 780c5f7442

View File

@ -70,12 +70,12 @@ class FacturationImportCdr {
if (is_file($dir.$xfile) && substr($xfile, -4) == ".csv") if (is_file($dir.$xfile) && substr($xfile, -4) == ".csv")
{ {
$files[$i] = $dir.$xfile; $files[$i] = $dir.$xfile;
dolibarr_syslog("FacturationImportCdr::Import ".$xfile." ajouté"); dolibarr_syslog("FacturationImportCdr::Import ".$xfile." ajoute");
$i++; $i++;
} }
else else
{ {
dolibarr_syslog("FacturationImportCdr::Import ".$xfile." ignoré"); dolibarr_syslog("FacturationImportCdr::Import ".$xfile." ignore");
} }
} }
@ -105,7 +105,7 @@ class FacturationImportCdr {
} }
/* /*
* Vérification des fichiers charges * Verification des fichiers charges
* *
*/ */
$fichiers = array(); $fichiers = array();
@ -125,7 +125,7 @@ class FacturationImportCdr {
} }
/* /*
* Vérification des fichiers traités * Verification des fichiers traites
* *
*/ */
$sql = "SELECT distinct(fichier_cdr)"; $sql = "SELECT distinct(fichier_cdr)";
@ -185,19 +185,21 @@ class FacturationImportCdr {
{ {
if ( $this->_verif($this->db, $xfile, $fichiers) == 0) if ( $this->_verif($this->db, $xfile, $fichiers) == 0)
{ {
$error = 0;
dolibarr_syslog("FacturationImportCdr::Import Lecture du fichier $xfile", LOG_DEBUG); dolibarr_syslog("FacturationImportCdr::Import Lecture du fichier $xfile", LOG_DEBUG);
array_push($this->messages,array('info',"Fichier ".basename($xfile)." : utilisation format ".$cdrformat->nom)); array_push($this->messages,array('info',"Fichier ".basename($xfile)." : utilisation format ".$cdrformat->nom));
$cdrformat->ReadFile($xfile);
$error = $cdrformat->ReadFile($xfile);
$this->messages=array_merge($this->messages, $cdrformat->messages); $this->messages=array_merge($this->messages, $cdrformat->messages);
$error = 0;
$line = 0; $line = 0;
$line_inserted = 0; $line_inserted = 0;
$hf = fopen ($xfile, "r"); $hf = fopen ($xfile, "r");
$line = 0; $line = 0;
if ($this->db->query("BEGIN")) if ($this->db->query("BEGIN") && $error == 0)
{ {
foreach ($cdrformat->datas as $data) foreach ($cdrformat->datas as $data)
{ {
@ -242,27 +244,27 @@ class FacturationImportCdr {
} }
else else
{ {
dolibarr_syslog("FacturationImportCdr::Import Ligne : $cont ignorée", LOG_INFO); dolibarr_syslog("FacturationImportCdr::Import Ligne : $cont ignoree", LOG_INFO);
$error++; $error++;
} }
} }
else else
{ {
dolibarr_syslog("FacturationImportCdr::Import Duree nulle Ligne : $cont ignorée", LOG_INFO); dolibarr_syslog("FacturationImportCdr::Import Duree nulle Ligne : $cont ignoree", LOG_INFO);
} }
} }
else else
{ {
dolibarr_syslog("FacturationImportCdr::Import Ligne $ligne inconnue Ligne : $cont ignorée", LOG_INFO); dolibarr_syslog("FacturationImportCdr::Import Ligne $ligne inconnue Ligne : $cont ignoree", LOG_INFO);
array_push($this->messages,array('warning',"Ligne $ligne inconnue")); array_push($this->messages,array('warning',"Ligne $ligne inconnue"));
} }
$line++; $line++;
} }
dolibarr_syslog("FacturationImportCdr::Import $line lignes traitées dans le fichier", LOG_INFO); dolibarr_syslog("FacturationImportCdr::Import $line lignes traitees dans le fichier", LOG_INFO);
$level = ($line > 0) ? 'info':'warning'; $level = ($line > 0) ? 'info':'warning';
array_push($this->messages,array($level,"$line lignes traitées dans le fichier")); array_push($this->messages,array($level,"$line lignes traitees dans le fichier"));
dolibarr_syslog("FacturationImportCdr::Import $line_inserted insert effectués", LOG_INFO); dolibarr_syslog("FacturationImportCdr::Import $line_inserted insert effectues", LOG_INFO);
$level = ($line_inserted > 0) ? 'info':'warning'; $level = ($line_inserted > 0) ? 'info':'warning';
array_push($this->messages,array($level,"$line_inserted ajout dans la table des CDR a traiter")); array_push($this->messages,array($level,"$line_inserted ajout dans la table des CDR a traiter"));
@ -283,8 +285,13 @@ class FacturationImportCdr {
{ {
$this->db->query("ROLLBACK"); $this->db->query("ROLLBACK");
dolibarr_syslog("ROLLBACK"); dolibarr_syslog("ROLLBACK");
array_push($this->messages, array('error',"Fichier ".basename($xfile)." : echec de l'importation"));
} }
} }
else
{
array_push($this->messages, array('error',"Fichier ".basename($xfile)." : echec de l'importation"));
}
} }
} }
else else