mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-25 10:51:34 +01:00
248 lines
6.2 KiB
PHP
248 lines
6.2 KiB
PHP
<?PHP
|
|
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
|
*
|
|
* 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( '<tr>');
|
|
$this->_log( "<td>$this->index");
|
|
$this->_log( "<td>$this->ligne");
|
|
$this->_log( "<td>".$this->dest);
|
|
$this->_log( "<td>".$this->duree);
|
|
$this->_log( "<td>".$this->montant);
|
|
$this->_log( "<td>".$cout_calcul);
|
|
|
|
if (round($cout_calcul,3) <> $objp->montant)
|
|
{
|
|
_log($file_details, "<td bgcolor=pink>".round($cout_calcul,3));
|
|
$err++;
|
|
}
|
|
else
|
|
{
|
|
_log($file_details, "<td>".round($cout_calcul,3));
|
|
}
|
|
_log($file_details, "<td>$err");
|
|
|
|
}
|
|
}
|
|
?>
|