From 561638585e30742a0e3a40fd01b602ac93f3c682 Mon Sep 17 00:00:00 2001 From: Rodolphe Quiedeville Date: Wed, 16 Feb 2005 10:17:03 +0000 Subject: [PATCH] Nouveau fichier --- .../ligne/commande/retour/liste.php | 109 ++++++++++ .../telephonie/script/retour-traitement.php | 190 ++++++++++++++++++ htdocs/telephonie/script/retour.php | 158 +++++++++++++++ 3 files changed, 457 insertions(+) create mode 100644 htdocs/telephonie/ligne/commande/retour/liste.php create mode 100644 htdocs/telephonie/script/retour-traitement.php create mode 100644 htdocs/telephonie/script/retour.php diff --git a/htdocs/telephonie/ligne/commande/retour/liste.php b/htdocs/telephonie/ligne/commande/retour/liste.php new file mode 100644 index 00000000000..68b86020684 --- /dev/null +++ b/htdocs/telephonie/ligne/commande/retour/liste.php @@ -0,0 +1,109 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + * + */ +require("./pre.inc.php"); + +if (!$user->rights->telephonie->lire) accessforbidden(); + +llxHeader('','Telephonie - Ligne - Commande - Retour'); + + +$page = $_GET["page"]; +$sortorder = $_GET["sortorder"]; + +if ($page == -1) { $page = 0 ; } + +$offset = $conf->liste_limit * $page ; +$pageprev = $page - 1; +$pagenext = $page + 1; + +if ($sortorder == "") { + $sortorder="DESC"; +} +if ($sortfield == "") { + $sortfield="rowid"; +} + +/* + * + */ +$sql = "SELECT "; +$sql .= " cli,mode,situation,date_mise_service,date_resiliation,motif_resiliation,commentaire,fichier, traite "; +$sql .= " FROM ".MAIN_DB_PREFIX."telephonie_commande_retour"; +$sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit+1, $offset); + +if ($db->query($sql)) +{ + $num = $db->num_rows(); + $i = 0; + + print_barre_liste("Retours Fournisseurs", $page, "liste.php", "", $sortfield, $sortorder, '', $num); + + print ''; + print ''; + print ''; + print "\n"; + $var=True; + + while ($i < min($num,$conf->liste_limit)) + { + $obj = $db->fetch_object(); + $var=!$var; + + $ligne = new LigneTel($db); + + if ( $ligne->fetch($obj->cli) == 1); + { + print "\n"; + print '\n"; + print '\n"; + print '\n"; + print '\n"; + print '\n"; + print "\n"; + } + $i++; + } + print "
Lignes StatutsModeResultatDateCommentaire-
"; + print ' '; + print ''; + print dolibarr_print_phone($obj->cli)."'.$obj->mode."'.$obj->situation."'.$obj->date_mise_service."'.$obj->commentaire."'; + if ($obj->traite == 0) + { + print "A traiter"; + } + else + { + print "-"; + } + print "
"; + $db->free(); +} +else +{ + print $db->error() . ' ' . $sql; +} + + +$db->close(); + +llxFooter("Dernière modification $Date$ révision $Revision$"); +?> diff --git a/htdocs/telephonie/script/retour-traitement.php b/htdocs/telephonie/script/retour-traitement.php new file mode 100644 index 00000000000..ff85079487e --- /dev/null +++ b/htdocs/telephonie/script/retour-traitement.php @@ -0,0 +1,190 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + * + * Script de traitement des retour de commande + */ + +require ("../../master.inc.php"); + +require_once (DOL_DOCUMENT_ROOT."/telephonie/lignetel.class.php"); +require_once (DOL_DOCUMENT_ROOT."/telephonie/facturetel.class.php"); +require_once (DOL_DOCUMENT_ROOT."/telephonie/telephonie-tarif.class.php"); +require_once (DOL_DOCUMENT_ROOT."/telephonie/communication.class.php"); +require_once (DOL_DOCUMENT_ROOT."/societe.class.php"); +require_once (DOL_DOCUMENT_ROOT."/lib/dolibarrmail.class.php"); + +dolibarr_syslog("retour-traitement"); + +$user = new User($db, 1); + +$error = 0; + + +$sql = "SELECT cli,mode,situation"; +$sql .= " , ".$db->pdate(date_mise_service); +$sql .= " , date_resiliation,motif_resiliation,commentaire,rowid "; +$sql .= " FROM ".MAIN_DB_PREFIX."telephonie_commande_retour "; +$sql .= " WHERE traite = 0"; + +if ($db->query($sql)) +{ + $i = 0; + $num = $db->num_rows(); + + while ($i < $num) + { + $row[$i] = $db->fetch_row(); + + $i++; + } +} + +$n = sizeof($row); + +dolibarr_syslog($n . " lignes à traiter"); + +for ($i = 0 ; $i < $n ; $i++) +{ + $numero = $row[$i][0]; + $mode = $row[$i][1]; + $situation = $row[$i][2]; + $date_mise_service = $row[$i][3]; + $date_resiliation = $row[$i][4]; + $motif_resiliation = $row[$i][5]; + $commentaire = $row[$i][6]; + $rowid = $row[$i][7]; + + $ligne = new LigneTel($db); + + if ($ligne->fetch($numero) == 1) + { + /* + * Activation de la ligne + */ + + if ($mode == 'PRESELECTION' && + $situation == 'CONFIRME' && + $commentaire == 'CONFIRME PAR FT') + { + + if ($ligne->statut == 2) + { + $statut = 3; + $datea = $db->idate($date_mise_service); + + if ($db->query("BEGIN")) + { + $error = 0; + + if ($ligne->set_statut($user, $statut, $datea) <> 0) + { + $error++; + } + + if (!$error) + { + /* Tag la ligne comme traitée */ + + $sql = "UPDATE ".MAIN_DB_PREFIX."telephonie_commande_retour "; + $sql .= " SET traite = 1, date_traitement=now() "; + $sql .= " WHERE rowid =".$rowid; + + if (! $db->query($sql)) + { + dolibarr_syslog("Erreur de traitement de ligne $numero"); + $error++; + } + } + + if ($error == 0) + { + $db->query("COMMIT"); + dolibarr_syslog("COMMIT"); + } + else + { + $db->query("ROLLBACK"); + dolibarr_syslog("ROLLBACK"); + } + + } + } + else + { + dolibarr_syslog("Ligne $numero déjà active"); + } + } + /* + * Ligne Rejetée + */ + + + /* + * + */ + /* + * Prefixe non géré + */ + + if ($mode == 'PREFIXE' && + $situation == 'CONFIRME') + { + if ($db->query("BEGIN")) + { + $error = 0; + + if (!$error) + { + /* Tag la ligne comme traitée */ + + $sql = "UPDATE ".MAIN_DB_PREFIX."telephonie_commande_retour "; + $sql .= " SET traite = 1, date_traitement=now() "; + $sql .= " WHERE rowid =".$rowid; + + if (! $db->query($sql)) + { + dolibarr_syslog("Erreur de traitement de ligne $numero"); + $error++; + } + } + + if ($error == 0) + { + $db->query("COMMIT"); + dolibarr_syslog("COMMIT"); + } + else + { + $db->query("ROLLBACK"); + dolibarr_syslog("ROLLBACK"); + } + + } + } + /* + * Fin mode PREFIXE + * + */ + } +} + + + + diff --git a/htdocs/telephonie/script/retour.php b/htdocs/telephonie/script/retour.php new file mode 100644 index 00000000000..bf0c303e982 --- /dev/null +++ b/htdocs/telephonie/script/retour.php @@ -0,0 +1,158 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + * + * Script d'import des retour + */ + +require ("../../master.inc.php"); + +$dir = DOL_DATA_ROOT."/telephonie/ligne/commande/retour/"; +$dirdone = DOL_DATA_ROOT."/telephonie/ligne/commande/retour/traite/"; + +$dirback = DOL_DATA_ROOT."/telephonie/ligne/commande/retour/backup/"; + +if (! file_exists($dirback)) +{ + umask(0); + if (! @mkdir($dirback, 0755)) + { + dolibarr_syslog("Erreur: creation '$dir'"); + } +} + + +$handle=opendir($dir); + +dolibarr_syslog("Lecture repertoire $dir"); + +while (($file = readdir($handle))!==false) +{ + if (is_file($dir.$file)) + { + + if (is_readable($dir.$file)) + { + + dolibarr_syslog("Lecture $file"); + + if (! file_exists($dirdone)) + { + umask(0); + if (! @mkdir($dirdone, 0755)) + { + dolibarr_syslog("Erreur: creation '$dirdone'"); + } + } + + /* + * On verifie que le fichier n'a pas déjà été traité + */ + if (! file_exists($dirdone.$file)) + { + if ( import_file($db, $dir, $file) == 0) + { + rename($dir.$file, $dirdone.$file); + } + } + else + { + dolibarr_syslog("Le fichier $file a déjà été traité"); + } + + } + else + { + dolibarr_syslog("Erreur Lecture $file permissions insuffisante"); + } + } +} + +closedir($handle); + +/** + * + * + * + */ + +Function import_file($db,$dir,$file) +{ + $error = 0; + $line = 0; + $hf = fopen ($dir.$file, "r"); + + if ($db->query("BEGIN")) + { + + while (!feof($hf)) + { + $cont = fgets($hf, 1024); + + $tabline = explode(";", $cont); + + if (substr($tabline, 0, 3) <> 'CLI') + { + if (sizeof($tabline) == 8) + { + $numero = $tabline[0]; + $mode = $tabline[1]; + $situation = $tabline[2]; + $date_mise_service = $tabline[3]; + $date_resiliation = $tabline[4]; + $motif_resiliation = $tabline[5]; + $commentaire = $tabline[6]; + $fichier = $file; + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."telephonie_commande_retour "; + + $sql .= " (cli,mode,situation,date_mise_service,date_resiliation,motif_resiliation,commentaire,fichier) "; + $sql .= " VALUES ("; + $sql .= "'$numero','$mode','$situation','$date_mise_service','$date_resiliation','$motif_resiliation','$commentaire','$fichier')"; + + if (! $db->query($sql)) + { + dolibarr_syslog("Erreur de traitement de ligne"); + dolibarr_syslog($db->error()); + $error++; + } + } + } + $line++; + } + + if ($error == 0) + { + $db->query("COMMIT"); + dolibarr_syslog("COMMIT"); + } + else + { + $db->query("ROLLBACK"); + dolibarr_syslog("ROLLBACK"); + } + + } + + fclose($hf); + + return $error; +} + +