Qual: Meilleure gestion erreur gestion des destinataires d'un mailing

Fix: Quelques erreurs sur le comptage des emails uniques.
This commit is contained in:
Laurent Destailleur 2005-04-06 23:23:48 +00:00
parent 78c38167b9
commit c66971004a
5 changed files with 42 additions and 30 deletions

View File

@ -36,7 +36,8 @@
*
*/
/** \file htdocs/includes/modules/mailings/cerise.modules.php
/**
\file htdocs/includes/modules/mailings/cerise.modules.php
\ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Cerise
\version $Revision$
@ -45,14 +46,15 @@
include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php';
/** \class mailing_cerise
/**
\class mailing_cerise
\brief Classe permettant de générer la liste des destinataires Cerise
*/
class mailing_cerise extends MailingTargets
{
var $name="ContactProspects"; // Identifiant du module mailing
var $desc='Tous les contacts de toutes les sociétés prospects'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
var $desc='Tous les contacts emails uniques de toutes les sociétés prospects'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
var $require_module=array("commercial"); // Module mailing actif si modules require_module actifs
var $require_admin=0; // Module mailing actif pour user admin ou non
var $picto='contact';
@ -69,14 +71,14 @@ class mailing_cerise extends MailingTargets
$this->db=$DB;
// Liste des tableaux des stats espace mailing
$this->statssql[0]="SELECT '".$langs->trans("Prospects")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 2";
$this->statssql[1]="SELECT '".$langs->trans("NbOfProspectsContacts")."' label, count(distinct(c.email)) nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 2 AND c.email IS NOT NULL";
$this->statssql[0]="SELECT '".$langs->trans("Prospects")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 2";
$this->statssql[1]="SELECT '".$langs->trans("NbOfProspectsContacts")."' as label, count(distinct(c.email)) as nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 2 AND c.email IS NOT NULL";
}
function getNbOfRecipients()
{
// La requete doit retourner: nb
$sql = "SELECT count(distinct(c.email)) nb";
$sql = "SELECT count(distinct(c.email)) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc";
@ -89,7 +91,7 @@ class mailing_cerise extends MailingTargets
function add_to_target($mailing_id)
{
// La requete doit retourner: email, fk_contact, name, firstname
$sql = "SELECT c.email email, c.idp fk_contact, c.name name, c.firstname firstname";
$sql = "SELECT c.email as email, c.idp as fk_contact, c.name as name, c.firstname as firstname";
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc";

View File

@ -70,13 +70,13 @@ class mailing_fraise extends MailingTargets
$this->db=$DB;
// Liste des tableaux des stats espace mailing
$this->statssql[0]="SELECT '".$langs->trans("MembersStatusValidated")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."adherent where statut = 1";
$this->statssql[0]="SELECT '".$langs->trans("MembersStatusValidated")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."adherent where statut = 1";
}
function getNbOfRecipients()
{
// La requete doit retourner: nb
$sql = "SELECT count(distinct(a.email)) nb";
$sql = "SELECT count(distinct(a.email)) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."adherent as a";
$sql .= " WHERE a.email IS NOT NULL and statut=1";
@ -86,7 +86,7 @@ class mailing_fraise extends MailingTargets
function add_to_target($mailing_id)
{
// La requete doit retourner: email, fk_contact, name, firstname
$sql = "SELECT a.email email, null fk_contact, a.nom name, a.prenom firstname";
$sql = "SELECT a.email as email, null as fk_contact, a.nom as name, a.prenom as firstname";
$sql .= " FROM ".MAIN_DB_PREFIX."adherent as a";
$sql .= " WHERE a.email IS NOT NULL AND a.statut=1";
$sql .= " ORDER BY a.email";

View File

@ -23,14 +23,16 @@
*
*/
/** \file htdocs/includes/modules/mailings/modules_mailings.php
/**
\file htdocs/includes/modules/mailings/modules_mailings.php
\ingroup mailing
\brief Fichier contenant la classe mère des classes de liste de destinataires mailing
\version $Revision$
*/
/** \class MailingTargets
/**
\class MailingTargets
\brief Classe mère des classes de liste de destinataires mailing
*/
@ -67,7 +69,7 @@ class MailingTargets
/**
* \brief Retourne nombre de destinataires
* \param sql Requete sql de comptage
* \return int Nb de destinataires
* \return int Nb de destinataires si ok, < 0 si erreur
*/
function getNbOfRecipients($sql)
{
@ -77,7 +79,9 @@ class MailingTargets
$obj = $this->db->fetch_object($result);
return $obj->nb;
}
return 0;
else {
return -1;
}
}
/**
@ -101,6 +105,7 @@ class MailingTargets
if (!$this->db->query($sql))
{
dolibarr_syslog($this->db->error());
$this->error=$this->db->error();
return -1;
}
}
@ -147,6 +152,7 @@ class MailingTargets
else
{
dolibarr_syslog($this->db->error());
$this->error=$this->db->error();
return -1;
}

View File

@ -36,7 +36,8 @@
*
*/
/** \file htdocs/includes/modules/mailings/poire.modules.php
/**
\file htdocs/includes/modules/mailings/poire.modules.php
\ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Poire
\version $Revision$
@ -45,14 +46,15 @@
include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php';
/** \class mailing_poire
/**
\class mailing_poire
\brief Classe permettant de générer la liste des destinataires Poire
*/
class mailing_poire extends MailingTargets
{
var $name='ContactCustomers'; // Identifiant du module mailing
var $desc='Tous les contacts de toutes les sociétés clientes'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
var $desc='Tous les contacts uniques de toutes les sociétés clientes'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
var $require_module=array("commercial"); // Module mailing actif si modules require_module actifs
var $require_admin=0; // Module mailing actif pour user admin ou non
var $picto='contact';
@ -69,19 +71,19 @@ class mailing_poire extends MailingTargets
$this->db=$DB;
// Liste des tableaux des stats espace mailing
$this->statssql[0]="SELECT '".$langs->trans("Customers")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 1";
$this->statssql[1]="SELECT '".$langs->trans("NbOfCustomersContacts")."' label, count(distinct(c.email)) nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 1 AND c.email IS NOT NULL";
$this->statssql[0]="SELECT '".$langs->trans("Customers")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE client = 1";
$this->statssql[1]="SELECT '".$langs->trans("NbOfCustomersContacts")."' as label, count(distinct(c.email)) as nb FROM ".MAIN_DB_PREFIX."socpeople as c, ".MAIN_DB_PREFIX."societe as s WHERE s.idp = c.fk_soc AND s.client = 1 AND c.email != ''";
}
function getNbOfRecipients()
{
// La requete doit retourner: nb
$sql = "SELECT count(distinct(c.email)) nb";
$sql = "SELECT count(distinct(c.email)) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc";
$sql .= " AND s.client = 1";
$sql .= " AND c.email IS NOT NULL";
$sql .= " AND c.email != ''";
return parent::getNbOfRecipients($sql);
}
@ -89,14 +91,14 @@ class mailing_poire extends MailingTargets
function add_to_target($mailing_id)
{
// La requete doit retourner: email, fk_contact, name, firstname
$sql = "SELECT c.email email, c.idp fk_contact, c.name name, c.firstname firstname";
$sql = "SELECT c.email as email, c.idp as fk_contact, c.name as name, c.firstname as firstname";
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc";
$sql .= " AND s.client = 1";
$sql .= " AND c.email IS NOT NULL";
$sql .= " AND c.email != ''";
$sql .= " ORDER BY c.email";
return parent::add_to_target($mailing_id, $sql);
}

View File

@ -35,7 +35,8 @@
*
*/
/** \file htdocs/includes/modules/mailings/pomme.modules.php
/**
\file htdocs/includes/modules/mailings/pomme.modules.php
\ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Pomme
\version $Revision$
@ -44,14 +45,15 @@
include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php';
/** \class mailing_pomme
/**
\class mailing_pomme
\brief Classe permettant de générer la liste des destinataires Pomme
*/
class mailing_pomme extends MailingTargets
{
var $name='DolibarrUsers'; // Identifiant du module mailing
var $desc='Tous les utilisateurs de Dolibarr'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
var $desc='Tous les utilisateurs avec emails de Dolibarr'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
var $require_module=array(); // Module mailing actif si modules require_module actifs
var $require_admin=1; // Module mailing actif pour user admin ou non
var $picto='user';
@ -68,13 +70,13 @@ class mailing_pomme extends MailingTargets
$this->db=$DB;
// Liste des tableaux des stats espace mailing
$this->statssql[0]="SELECT '".$langs->trans("DolibarrUsers")."' label, count(*) nb FROM ".MAIN_DB_PREFIX."user";
$this->statssql[0]="SELECT '".$langs->trans("DolibarrUsers")."' as label, count(*) as nb FROM ".MAIN_DB_PREFIX."user";
}
function getNbOfRecipients()
{
// La requete doit retourner: nb
$sql = "SELECT count(distinct(u.email)) nb";
$sql = "SELECT count(distinct(u.email)) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
$sql .= " WHERE u.email IS NOT NULL";
@ -84,7 +86,7 @@ class mailing_pomme extends MailingTargets
function add_to_target($mailing_id)
{
// La requete doit retourner: email, fk_contact, name, firstname
$sql = "SELECT u.email email, null fk_contact, u.name name, u.firstname firstname";
$sql = "SELECT u.email as email, null as fk_contact, u.name as name, u.firstname as firstname";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
$sql .= " WHERE u.email IS NOT NULL";
$sql .= " ORDER BY u.email";