* * 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$ * */ class CommunicationTelephonique { var $index; var $ligne; var $date; var $duree; var $dest; var $numero; var $montant; /** * Constructeur * */ function CommunicationTelephonique() { return 1; } /** * Calcul le coût de la communication * */ function cout($tarif_achat, $tarif_vente, $ligne, $_db) { $error = 0; if (substr($this->numero,0,2) == '00') /* International */ { $nbinter++; $duree_international += $objp->duree; $num = $this->numero; $this->remise = 0; } elseif (substr($this->numero,0,2) == '06') /* Telephones Mobiles */ { $dureemob += $objp->duree; $nbmob++; $num = "0033".substr($this->numero,1); $this->remise = $ligne->remise; } /* Tarif Local */ /* elseif (substr($this->numero,0,4) == substr($objp->client,0,4) ) { $dureenat += $objp->duree; $nbnat++; $num = "0033999".substr($this->numero, 1); $this->remise = $ligne->remise; }*/ else { $dureenat += $objp->duree; $nbnat++; $num = "0033".substr($this->numero, 1); $this->remise = $ligne->remise; } /* * * */ /* Numéros spéciaux */ if (substr($num,4,1) == 8) { $this->remise = 0; $this->cout_temp_vente = 0; $this->tarif_libelle_vente = "Numéros spéciaux"; $this->cout_fixe_vente = ereg_replace(",",".", $this->montant); } else { /* Fin Numéros spéciaux */ if (! $tarif_achat->cout($num, $this->cout_temp_achat, $this->cout_fixe_achat, $tarif_libelle_achat)) { print "3- Tarif achat manquant pour $num\n"; dolibarr_syslog("CommunicationTelephonique::Cout Tarif achat manquant pour $num"); $error++; } if (! $tarif_vente->cout($num, $this->cout_temp_vente, $this->cout_fixe_vente, $this->tarif_libelle_vente)) { print "3- Tarif vente manquant pour $num\n"; dolibarr_syslog("CommunicationTelephonique::Cout Tarif vente manquant pour $num"); $error++; } } /* Specification VoIP */ if ($ligne->techno == 'voip') { if (substr($num,4,1) < 6) { $lignedest = new LigneTel($_db); if ($lignedest->fetch("0".substr($num, -9)) == 1) { if ($lignedest->techno == 'voip' && ($ligne->client_comm_id == $lignedest->client_comm_id)) { $this->remise = 0; $this->cout_fixe_vente = 0; $this->cout_temp_vente = 0; $this->tarif_libelle_vente = "Appel Interne VoIP"; } } } } /* Fin VoIP */ $this->cout_achat = ( ($this->duree * $this->cout_temp_achat / 60) + $this->cout_fixe_achat); if ($ligne->facturable == 1) { $this->cout_vente = ( ($this->duree * $this->cout_temp_vente / 60)); $this->cout_vente = ( $this->cout_vente * ( 1 - ($this->remise / 100))); /* Ajouté round le 2/12/05 */ $this->cout_vente = round(($this->cout_vente + $this->cout_fixe_vente), 3); } else { $this->cout_vente = 0; } return $error; } /* * Enregistre la ligne de communications dans * llx_telephonie_communications_details * */ function logsql($db) { $this->cout_achat = ereg_replace(",",".", $this->cout_achat); $this->cout_vente = ereg_replace(",",".", $this->cout_vente); $this->remise = ereg_replace(",",".", $this->remise); $this->montant = ereg_replace(",",".", $this->montant); $this->dateheure = mktime(substr($this->heure, 0,2), substr($this->heure, 3,2), substr($this->heure, 6,2), substr($this->date, 3,2), substr($this->date, 0,2), substr($this->date, 6,4)); $sql = "INSERT INTO ".MAIN_DB_PREFIX."telephonie_communications_details"; $sql .= " (fk_ligne,ligne, date, numero, duree"; $sql .= ", tarif_achat_temp, tarif_achat_fixe, tarif_vente_temp, tarif_vente_fixe"; $sql .= ", cout_achat, cout_vente, remise,dest, fourn_montant"; $sql .= " , fichier_cdr, fk_fournisseur, fk_telephonie_facture)"; $sql .= " VALUES ("; $sql .= $this->fk_ligne.","; $sql .= "'$this->ligne','".$db->idate($this->dateheure)."','$this->numero','$this->duree'"; $sql .= ", '$this->cout_temp_achat','$this->cout_fixe_achat','$this->cout_temp_vente','$this->cout_fixe_vente'"; $sql .= ", '$this->cout_achat','$this->cout_vente', '$this->remise'"; $sql .= ",'".addslashes($this->tarif_libelle_vente)."','$this->montant'"; $sql .= ",'".$this->fichier_cdr."','".$this->fournisseur."'"; $sql .= ",'".$this->facture_id."')"; if (! $db->query($sql)) { dolibarr_syslog("CommunicationTelephonique::logsql Erreur"); dolibarr_syslog("CommunicationTelephonique::logsql ".$db->error()); return 1; } else { return 0; } } /* * */ function _log( $text) { if ($this->file_details) { fputs($this->file_details, $text); } } /* * */ function loghtml($file) { $this->file_details = $file; $this->_log( '