[ Index ]
 

Code source de Dolibarr 2.0.1

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/htdocs/telephonie/script/ -> import-cdr.php (source)

   1  <?PHP
   2  /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
   3   *
   4   * This program is free software; you can redistribute it and/or modify
   5   * it under the terms of the GNU General Public License as published by
   6   * the Free Software Foundation; either version 2 of the License, or
   7   * (at your option) any later version.
   8   *
   9   * This program is distributed in the hope that it will be useful,
  10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12   * GNU General Public License for more details.
  13   *
  14   * You should have received a copy of the GNU General Public License
  15   * along with this program; if not, write to the Free Software
  16   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17   *
  18   * $Id: import-cdr.php,v 1.13 2005/04/06 08:36:41 rodolphe Exp $
  19   * $Source: /cvsroot/dolibarr/dolibarr/htdocs/telephonie/script/import-cdr.php,v $
  20   *
  21   * Script d'import des CDR des fournisseurs
  22   */
  23  
  24  require  ("../../master.inc.php");
  25  
  26  $opt = getopt("f:i:");
  27  
  28  $file = $opt['f'];
  29  $id_fourn = $opt['i'];
  30  
  31  if (strlen($file) == 0 || strlen($id_fourn) == 0)
  32  {
  33    print "Usage :\n php import-cdr.php -f <filename> -i <id_fournisseur>\n";
  34    exit;
  35  }
  36  
  37  /*
  38   * Vérification du fournisseur
  39   *
  40   */
  41  
  42  $sql = "SELECT f.rowid, f.nom";
  43  $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_fournisseur as f";
  44  $sql .= " WHERE f.rowid = ".$id_fourn;
  45  
  46  if ($db->query($sql))
  47  {  
  48    $num = $db->num_rows();
  49  
  50    if ($num == 1)
  51      {
  52        $row = $db->fetch_row();
  53        dolibarr_syslog ("Import fichier ".$file);
  54        dolibarr_syslog("Fournisseur [".$row[0]."] ".$row[1]);
  55      }
  56    else
  57      {
  58        dolibarr_syslog("Erreur Fournisseur inexistant : ".$id_fourn);
  59        exit ;
  60      }
  61  }
  62  else
  63  {
  64    dolibarr_syslog("Erreur recherche fournisseur");
  65    exit ;
  66  }
  67  
  68  /*
  69   * Vérifie que le fichier n'a pas déjà été chargé
  70   *
  71   */
  72  
  73  $sql = "SELECT count(fichier)";
  74  $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_import_cdr";
  75  $sql .= " WHERE fichier = '".basename($file)."'";
  76  
  77  if ($db->query($sql))
  78  {  
  79    $num = $db->num_rows();
  80  
  81    if ($num == 1)
  82      {
  83        $row = $db->fetch_row();
  84        if ($row[0] > 0)
  85      {
  86        dolibarr_syslog ("Fichier ".$file." déjà chargé dans import-log");
  87  
  88        exit ;
  89      }
  90      }
  91    else
  92      {
  93        dolibarr_syslog("Erreur vérif du fichier");
  94        exit ;
  95      }
  96  }
  97  else
  98  {
  99    dolibarr_syslog("Erreur SQL vérification du fichier");
 100    exit ;
 101  }
 102  
 103  /*
 104   * Vérifie que le fichier n'a pas déjà été traité
 105   *
 106   */
 107  
 108  $sql = "SELECT count(fichier_cdr)";
 109  $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_communications_details";
 110  $sql .= " WHERE fichier_cdr = '".basename($file)."'";
 111  
 112  if ($db->query($sql))
 113  {  
 114    $num = $db->num_rows();
 115  
 116    if ($num == 1)
 117      {
 118        $row = $db->fetch_row();
 119        if ($row[0] > 0)
 120      {
 121        dolibarr_syslog ("Fichier ".$file." déjà traité");
 122        exit ;
 123      }
 124      }
 125    else
 126      {
 127        dolibarr_syslog("Erreur vérif du fichier dans les comm");
 128        exit ;
 129      }
 130  }
 131  else
 132  {
 133    dolibarr_syslog("Erreur SQL vérification du fichier dans les comm");
 134    dolibarr_syslog($sql);
 135    exit ;
 136  }
 137  
 138  /*
 139   * Charge les ID de lignes
 140   *
 141   */
 142  
 143  $sql = "SELECT ligne, rowid ";
 144  $sql .= " FROM ".MAIN_DB_PREFIX."telephonie_societe_ligne";
 145  
 146  $resql = $db->query($sql);
 147  
 148  if ($resql)
 149  {  
 150    $num = $db->num_rows($resql);
 151    dolibarr_syslog ($num . " lignes chargées");
 152    $i = 0;
 153    $ligneids = array();
 154  
 155    while ($i < $num)
 156      {
 157        $row = $db->fetch_row($resql);
 158        $ligneids[$row[0]] = $row[1];
 159        $i++;
 160      }
 161  }
 162  else
 163  {
 164    dolibarr_syslog("Erreur chargement des lignes");
 165    dolibarr_syslog($sql);
 166    exit ;
 167  }
 168  
 169  
 170  /*
 171   * Traitement
 172   *
 173   */
 174  
 175  if (is_readable($file))
 176  {
 177    
 178    dolibarr_syslog("Lecture du fichier $file");
 179    
 180    $error = 0;
 181    $line = 0;
 182    $hf = fopen ($file, "r");
 183    $line = 0;
 184    
 185    if ($db->query("BEGIN"))
 186      {  
 187        while (!feof($hf) )
 188      {
 189        $cont = fgets($hf, 1024);
 190    
 191        if (strlen(trim($cont)) > 0)
 192          {
 193            $tabline = explode(";", $cont);
 194            if (sizeof($tabline) == 11)
 195          {
 196            $index             = $tabline[0];
 197            $ligne             = ereg_replace('"','',$tabline[1]);
 198            $date              = $tabline[2];
 199            $heure             = $tabline[3];
 200            $numero            = $tabline[4];
 201            $tarif             = $tabline[5];
 202            $duree_text        = $tabline[6];
 203            $tarif_fourn       = $tabline[7];
 204            $montant           = $tabline[8];
 205            $duree_secondes    = ereg_replace('"','',$tabline[9]);
 206                      
 207            if ($ligneids[$ligne] > 0)
 208              {
 209                $sql = "INSERT INTO ".MAIN_DB_PREFIX."telephonie_import_cdr";
 210                
 211                $sql .= "(idx,fk_ligne,ligne,date,heure,num,dest,dureetext,tarif,montant,duree";
 212                $sql .= ", fichier, fk_fournisseur)";
 213                
 214                $sql .= " VALUES (";
 215                $sql .= "$index";
 216                $sql .= ",'".$ligneids[$ligne]."'";
 217                $sql .= ",'".$ligne."'";
 218                $sql .= ",'".ereg_replace('"','',$date)."'";
 219                $sql .= ",'".ereg_replace('"','',$heure)."'";
 220                $sql .= ",'".ereg_replace('"','',$numero)."'";
 221                $sql .= ",'".addslashes(ereg_replace('"','',$tarif))."'";
 222                $sql .= ",'".ereg_replace('"','',$duree_text)."'";
 223                $sql .= ",'".ereg_replace('"','',$tarif_fourn)."'";
 224                $sql .= ",".ereg_replace(',','.',$montant);
 225                $sql .= ",".$duree_secondes;
 226                $sql .= ",'".basename($file)."'";
 227                $sql .= " ,".$id_fourn;
 228                $sql .= ")";
 229                
 230                if(ereg("^[0-9]+$", $duree_secondes))
 231              {
 232                if ($db->query($sql))
 233                  {
 234                    $line_inserted++;
 235                  }
 236                else
 237                  {
 238                    dolibarr_syslog("Erreur de traitement de ligne $index");
 239                    dolibarr_syslog($db->error());
 240                    dolibarr_syslog($sql);
 241                    $error++;
 242                  }
 243              }
 244                else
 245              {
 246                print "Ligne : $cont ignorée\n";
 247              }
 248                
 249              }
 250            else
 251              {
 252                dolibarr_syslog("Ligne : $ligne ignorée!");
 253                $error++;
 254              }
 255            
 256          }
 257            else
 258          {
 259            dolibarr_syslog("Mauvais format de fichier ligne $line");
 260            $error++;
 261          }
 262          }
 263        $line++;
 264      }
 265        
 266        dolibarr_syslog(($line -1 )." lignes traitées dans le fichier");
 267        dolibarr_syslog($line_inserted." insert effectués");
 268        
 269        if ($error == 0)
 270      {      
 271        $db->query("COMMIT");
 272        dolibarr_syslog("COMMIT");
 273      }
 274        else
 275      {
 276        $db->query("ROLLBACK");
 277        dolibarr_syslog("ROLLBACK");
 278      }
 279        
 280      }
 281    
 282    fclose($hf);
 283  }
 284  else
 285  {
 286    print "Erreur lecture : $file";
 287    dolibarr_syslog($file . " not readable");
 288  }
 289  
 290  
 291  return $error;


Généré le : Mon Nov 26 12:29:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics