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 \ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Cerise \brief Fichier de la classe permettant de générer la liste de destinataires Cerise
\version $Revision$ \version $Revision$
@ -45,14 +46,15 @@
include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; 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 \brief Classe permettant de générer la liste des destinataires Cerise
*/ */
class mailing_cerise extends MailingTargets class mailing_cerise extends MailingTargets
{ {
var $name="ContactProspects"; // Identifiant du module mailing 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_module=array("commercial"); // Module mailing actif si modules require_module actifs
var $require_admin=0; // Module mailing actif pour user admin ou non var $require_admin=0; // Module mailing actif pour user admin ou non
var $picto='contact'; var $picto='contact';
@ -69,14 +71,14 @@ class mailing_cerise extends MailingTargets
$this->db=$DB; $this->db=$DB;
// Liste des tableaux des stats espace mailing // 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[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")."' 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[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() function getNbOfRecipients()
{ {
// La requete doit retourner: nb // 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 .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s"; $sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc"; $sql .= " WHERE s.idp = c.fk_soc";
@ -89,7 +91,7 @@ class mailing_cerise extends MailingTargets
function add_to_target($mailing_id) function add_to_target($mailing_id)
{ {
// La requete doit retourner: email, fk_contact, name, firstname // 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 .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s"; $sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc"; $sql .= " WHERE s.idp = c.fk_soc";

View File

@ -70,13 +70,13 @@ class mailing_fraise extends MailingTargets
$this->db=$DB; $this->db=$DB;
// Liste des tableaux des stats espace mailing // 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() function getNbOfRecipients()
{ {
// La requete doit retourner: nb // 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 .= " FROM ".MAIN_DB_PREFIX."adherent as a";
$sql .= " WHERE a.email IS NOT NULL and statut=1"; $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) function add_to_target($mailing_id)
{ {
// La requete doit retourner: email, fk_contact, name, firstname // 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 .= " FROM ".MAIN_DB_PREFIX."adherent as a";
$sql .= " WHERE a.email IS NOT NULL AND a.statut=1"; $sql .= " WHERE a.email IS NOT NULL AND a.statut=1";
$sql .= " ORDER BY a.email"; $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 \ingroup mailing
\brief Fichier contenant la classe mère des classes de liste de destinataires mailing \brief Fichier contenant la classe mère des classes de liste de destinataires mailing
\version $Revision$ \version $Revision$
*/ */
/** \class MailingTargets /**
\class MailingTargets
\brief Classe mère des classes de liste de destinataires mailing \brief Classe mère des classes de liste de destinataires mailing
*/ */
@ -67,7 +69,7 @@ class MailingTargets
/** /**
* \brief Retourne nombre de destinataires * \brief Retourne nombre de destinataires
* \param sql Requete sql de comptage * \param sql Requete sql de comptage
* \return int Nb de destinataires * \return int Nb de destinataires si ok, < 0 si erreur
*/ */
function getNbOfRecipients($sql) function getNbOfRecipients($sql)
{ {
@ -77,7 +79,9 @@ class MailingTargets
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
return $obj->nb; return $obj->nb;
} }
return 0; else {
return -1;
}
} }
/** /**
@ -101,6 +105,7 @@ class MailingTargets
if (!$this->db->query($sql)) if (!$this->db->query($sql))
{ {
dolibarr_syslog($this->db->error()); dolibarr_syslog($this->db->error());
$this->error=$this->db->error();
return -1; return -1;
} }
} }
@ -147,6 +152,7 @@ class MailingTargets
else else
{ {
dolibarr_syslog($this->db->error()); dolibarr_syslog($this->db->error());
$this->error=$this->db->error();
return -1; 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 \ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Poire \brief Fichier de la classe permettant de générer la liste de destinataires Poire
\version $Revision$ \version $Revision$
@ -45,14 +46,15 @@
include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; 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 \brief Classe permettant de générer la liste des destinataires Poire
*/ */
class mailing_poire extends MailingTargets class mailing_poire extends MailingTargets
{ {
var $name='ContactCustomers'; // Identifiant du module mailing 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_module=array("commercial"); // Module mailing actif si modules require_module actifs
var $require_admin=0; // Module mailing actif pour user admin ou non var $require_admin=0; // Module mailing actif pour user admin ou non
var $picto='contact'; var $picto='contact';
@ -69,19 +71,19 @@ class mailing_poire extends MailingTargets
$this->db=$DB; $this->db=$DB;
// Liste des tableaux des stats espace mailing // 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[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")."' 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[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() function getNbOfRecipients()
{ {
// La requete doit retourner: nb // 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 .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s"; $sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc"; $sql .= " WHERE s.idp = c.fk_soc";
$sql .= " AND s.client = 1"; $sql .= " AND s.client = 1";
$sql .= " AND c.email IS NOT NULL"; $sql .= " AND c.email != ''";
return parent::getNbOfRecipients($sql); return parent::getNbOfRecipients($sql);
} }
@ -89,12 +91,12 @@ class mailing_poire extends MailingTargets
function add_to_target($mailing_id) function add_to_target($mailing_id)
{ {
// La requete doit retourner: email, fk_contact, name, firstname // 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 .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= ", ".MAIN_DB_PREFIX."societe as s"; $sql .= ", ".MAIN_DB_PREFIX."societe as s";
$sql .= " WHERE s.idp = c.fk_soc"; $sql .= " WHERE s.idp = c.fk_soc";
$sql .= " AND s.client = 1"; $sql .= " AND s.client = 1";
$sql .= " AND c.email IS NOT NULL"; $sql .= " AND c.email != ''";
$sql .= " ORDER BY c.email"; $sql .= " ORDER BY c.email";
return parent::add_to_target($mailing_id, $sql); 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 \ingroup mailing
\brief Fichier de la classe permettant de générer la liste de destinataires Pomme \brief Fichier de la classe permettant de générer la liste de destinataires Pomme
\version $Revision$ \version $Revision$
@ -44,14 +45,15 @@
include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'; 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 \brief Classe permettant de générer la liste des destinataires Pomme
*/ */
class mailing_pomme extends MailingTargets class mailing_pomme extends MailingTargets
{ {
var $name='DolibarrUsers'; // Identifiant du module mailing 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_module=array(); // Module mailing actif si modules require_module actifs
var $require_admin=1; // Module mailing actif pour user admin ou non var $require_admin=1; // Module mailing actif pour user admin ou non
var $picto='user'; var $picto='user';
@ -68,13 +70,13 @@ class mailing_pomme extends MailingTargets
$this->db=$DB; $this->db=$DB;
// Liste des tableaux des stats espace mailing // 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() function getNbOfRecipients()
{ {
// La requete doit retourner: nb // 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 .= " FROM ".MAIN_DB_PREFIX."user as u";
$sql .= " WHERE u.email IS NOT NULL"; $sql .= " WHERE u.email IS NOT NULL";
@ -84,7 +86,7 @@ class mailing_pomme extends MailingTargets
function add_to_target($mailing_id) function add_to_target($mailing_id)
{ {
// La requete doit retourner: email, fk_contact, name, firstname // 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 .= " FROM ".MAIN_DB_PREFIX."user as u";
$sql .= " WHERE u.email IS NOT NULL"; $sql .= " WHERE u.email IS NOT NULL";
$sql .= " ORDER BY u.email"; $sql .= " ORDER BY u.email";