| [ Index ] |
|
Code source de Dolibarr 2.0.1 |
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;
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Mon Nov 26 12:29:37 2007 | par Balluche grâce à PHPXref 0.7 |
|