Ajout nombre de mailings de masse reçues sur la fiche contacts

This commit is contained in:
Laurent Destailleur 2005-09-18 18:23:12 +00:00
parent 5c25b56d5b
commit 023d89538d
3 changed files with 222 additions and 97 deletions

View File

@ -653,47 +653,76 @@ class Contact
} }
} }
/* /*
* \brief Charge les informations sur le contact, depuis la base * \brief Charge les informations sur le contact, depuis la base
* \param id id du contact à charger * \param id id du contact à charger
*/ */
function info($id) function info($id)
{ {
$sql = "SELECT c.idp, ".$this->db->pdate("datec")." as datec, fk_user"; $sql = "SELECT c.idp, ".$this->db->pdate("datec")." as datec, fk_user";
$sql .= ", ".$this->db->pdate("tms")." as tms, fk_user_modif"; $sql .= ", ".$this->db->pdate("tms")." as tms, fk_user_modif";
$sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c"; $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= " WHERE c.idp = $id"; $sql .= " WHERE c.idp = $id";
if ($this->db->query($sql))
{ $resql=$this->db->query($sql);
if ($this->db->num_rows()) if ($resql)
{ {
$obj = $this->db->fetch_object(); if ($this->db->num_rows($resql))
{
$this->id = $obj->idp; $obj = $this->db->fetch_object($resql);
if ($obj->fk_user) { $this->id = $obj->idp;
$cuser = new User($this->db, $obj->fk_user);
$cuser->fetch(); if ($obj->fk_user) {
$this->user_creation = $cuser; $cuser = new User($this->db, $obj->fk_user);
} $cuser->fetch();
$this->user_creation = $cuser;
if ($obj->fk_user_modif) { }
$muser = new User($this->db, $obj->fk_user_modif);
$muser->fetch(); if ($obj->fk_user_modif) {
$this->user_modification = $muser; $muser = new User($this->db, $obj->fk_user_modif);
} $muser->fetch();
$this->user_modification = $muser;
$this->date_creation = $obj->datec; }
$this->date_modification = $obj->tms;
$this->date_creation = $obj->datec;
} $this->date_modification = $obj->tms;
$this->db->free(); }
}
else $this->db->free($resql);
{ }
print $this->db->error(); else
} {
print $this->db->error();
}
} }
/*
* \brief Renvoi nombre d'emailings reçu par le contact avec son email
* \return int Nombre d'emailings
*/
function getNbOfEMailings()
{
$sql = "SELECT count(mc.email) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc";
$sql.= " WHERE mc.email = '".$this->email."'";
$sql.= " AND mc.statut=1"; // -1 erreur, 0 non envoyé, 1 envoyé avec succès
$resql=$this->db->query($sql);
if ($resql)
{
$obj = $this->db->fetch_object($resql);
$nb=$obj->nb;
$this->db->free($resql);
return $nb;
}
else
{
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>

View File

@ -269,8 +269,8 @@ if ($_GET["action"] == 'create')
print '<tr><td>Tel Pro</td><td><input name="phone_pro" type="text" size="18" maxlength="80" value="'.$contact->phone_pro.'"></td>'; print '<tr><td>Tel Pro</td><td><input name="phone_pro" type="text" size="18" maxlength="80" value="'.$contact->phone_pro.'"></td>';
print '<td>Tel Perso</td><td><input name="phone_perso" type="text" size="18" maxlength="80" value="'.$contact->phone_perso.'"></td></tr>'; print '<td>Tel Perso</td><td><input name="phone_perso" type="text" size="18" maxlength="80" value="'.$contact->phone_perso.'"></td></tr>';
print '<tr><td>'.$langs->trans("Fax").'</td><td><input name="fax" type="text" size="18" maxlength="80"></td>'; print '<tr><td>Portable</td><td><input name="phone_mobile" type="text" size="18" maxlength="80" value="'.$contact->phone_mobile.'"></td>';
print '<td>Portable</td><td><input name="phone_mobile" type="text" size="18" maxlength="80" value="'.$contact->phone_mobile.'"></td></tr>'; print '<td>'.$langs->trans("Fax").'</td><td><input name="fax" type="text" size="18" maxlength="80"></td></tr>';
print '<tr><td>'.$langs->trans("Email").'</td><td colspan="3"><input name="email" type="text" size="50" maxlength="80" value="'.$contact->email.'"></td></tr>'; print '<tr><td>'.$langs->trans("Email").'</td><td colspan="3"><input name="email" type="text" size="50" maxlength="80" value="'.$contact->email.'"></td></tr>';
@ -339,7 +339,18 @@ elseif ($_GET["action"] == 'edit')
print '<tr><td>Portable</td><td><input name="phone_mobile" type="text" size="18" maxlength="80" value="'.$contact->phone_mobile.'"></td>'; print '<tr><td>Portable</td><td><input name="phone_mobile" type="text" size="18" maxlength="80" value="'.$contact->phone_mobile.'"></td>';
print '<td>'.$langs->trans("Fax").'</td><td><input name="fax" type="text" size="18" maxlength="80" value="'.$contact->fax.'"></td></tr>'; print '<td>'.$langs->trans("Fax").'</td><td><input name="fax" type="text" size="18" maxlength="80" value="'.$contact->fax.'"></td></tr>';
print '<tr><td>'.$langs->trans("EMail").'</td><td colspan="3"><input name="email" type="text" size="50" maxlength="80" value="'.$contact->email.'"></td></tr>'; print '<tr><td>'.$langs->trans("EMail").'</td><td><input name="email" type="text" size="50" maxlength="80" value="'.$contact->email.'"></td>';
if ($conf->mailing->enabled)
{
$langs->load("mails");
print '<td nowrap>'.$langs->trans("NbOfEMailingsReceived").'</td>';
print '<td>'.$contact->getNbOfEMailings().'</td>';
}
else
{
print '<td colspan="2">&nbsp;</td>';
}
print '</tr>';
print '<tr><td>Jabberid</td><td colspan="3"><input name="jabberid" type="text" size="50" maxlength="80" value="'.$contact->jabberid.'"></td></tr>'; print '<tr><td>Jabberid</td><td colspan="3"><input name="jabberid" type="text" size="50" maxlength="80" value="'.$contact->jabberid.'"></td></tr>';
@ -408,10 +419,10 @@ else
print '<tr><td>Tel Pro</td><td>'.$contact->phone_pro.'</td>'; print '<tr><td>Tel Pro</td><td>'.$contact->phone_pro.'</td>';
print '<td>Tel Perso</td><td>'.$contact->phone_perso.'</td></tr>'; print '<td>Tel Perso</td><td>'.$contact->phone_perso.'</td></tr>';
print '<td>Portable</td><td>'.$contact->phone_mobile.'</td>'; print '<tr><td>Portable</td><td>'.$contact->phone_mobile.'</td>';
print '<td>'.$langs->trans("Fax").'</td><td>'.$contact->fax.'</td></tr>'; print '<td>'.$langs->trans("Fax").'</td><td>'.$contact->fax.'</td></tr>';
print '<tr><td>'.$langs->trans("EMail").'</td><td colspan="3">'; print '<tr><td>'.$langs->trans("EMail").'</td><td>';
if ($contact->email && ! ValidEmail($contact->email)) if ($contact->email && ! ValidEmail($contact->email))
{ {
print '<div class="error">'.$langs->trans("ErrorBadEMail",$contact->email)."</div>"; print '<div class="error">'.$langs->trans("ErrorBadEMail",$contact->email)."</div>";
@ -420,8 +431,19 @@ else
{ {
print $contact->email; print $contact->email;
} }
print '</td></tr>'; print '</td>';
if ($conf->mailing->enabled)
{
$langs->load("mails");
print '<td nowrap>'.$langs->trans("NbOfEMailingsReceived").'</td>';
print '<td>'.$contact->getNbOfEMailings().'</td>';
}
else
{
print '<td colspan="2">&nbsp;</td>';
}
print '</tr>';
print '<tr><td>Jabberid</td><td colspan="3">'.$contact->jabberid.'</td></tr>'; print '<tr><td>Jabberid</td><td colspan="3">'.$contact->jabberid.'</td></tr>';
print '<tr><td>'.$langs->trans("Note").'</td><td colspan="3">'; print '<tr><td>'.$langs->trans("Note").'</td><td colspan="3">';
@ -460,26 +482,20 @@ else
} }
// Historique des actions vers ce contact // Historique des actions sur ce contact
print_titre ($langs->trans("TasksHistoryForThisContact")); print_titre ($langs->trans("TasksHistoryForThisContact"));
$histo=array();
$numaction = 0 ;
print '<table width="100%" class="noborder">'; // Recherche histo sur actioncomm
$sql = "SELECT a.id, ".$db->pdate("a.datea")." as da, a.note, a.percent as percent,";
print "<tr class=\"liste_titre\">"; $sql.= " c.code as acode, c.libelle,";
print "<td>".$langs->trans("Date")."</td><td>".$langs->trans("Actions")."</td>"; $sql.= " u.rowid as user_id, u.code";
print "<td>".$langs->trans("CreatedBy")."</td></tr>"; $sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a, ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u ";
$sql.= " WHERE fk_contact = ".$contact->id;
$sql = "SELECT a.id, ".$db->pdate("a.datea")." as da, c.libelle, u.code, a.propalrowid, a.fk_user_author, fk_contact, u.rowid "; $sql.= " AND u.rowid = a.fk_user_author";
$sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as a, ".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."user as u "; $sql.= " AND c.id=a.fk_action";
$sql .= " WHERE fk_contact = ".$contact->id; $sql.= " ORDER BY a.datea DESC, a.id DESC";
$sql .= " AND u.rowid = a.fk_user_author";
$sql .= " AND c.id=a.fk_action ";
if ($contactid)
{
$sql .= " AND fk_contact = $contactid";
}
$sql .= " ORDER BY a.datea DESC, a.id DESC";
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
@ -490,21 +506,10 @@ else
while ($i < $num) while ($i < $num)
{ {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
$var=!$var; $histo[$numaction]=array('type'=>'action','id'=>$obj->id,'date'=>$obj->da,'note'=>$obj->note,'percent'=>$obj->percent,
print "<tr $bc[$var]>"; 'acode'=>$obj->acode,'libelle'=>$obj->libelle,
'userid'=>$obj->user_id,'code'=>$obj->code);
print "<td>". strftime("%d %b %Y %H:%M", $obj->da) ."</td>"; $numaction++;
if ($obj->propalrowid)
{
print "<td><a href=\"".DOL_URL_ROOT."/comm/propal.php?propalid=".$obj->propalrowid."\">".$obj->libelle."</a></td>";
}
else
{
print "<td>$obj->libelle</td>";
}
print "<td>$obj->code&nbsp;</td>";
print "</tr>\n";
$i++; $i++;
} }
} }
@ -512,8 +517,101 @@ else
{ {
dolibarr_print_error($db); dolibarr_print_error($db);
} }
// Recherche histo sur mailing
$sql = "SELECT m.rowid as id, ".$db->pdate("mc.date_envoi")." as da, m.titre as note, '100' as percent,";
$sql.= " 'AC_EMAILING' as acode,";
$sql.= " u.rowid as user_id, u.code";
$sql.= " FROM ".MAIN_DB_PREFIX."mailing as m, ".MAIN_DB_PREFIX."mailing_cibles as mc, ".MAIN_DB_PREFIX."user as u ";
$sql.= " WHERE mc.email = '".$contact->email."'";
$sql.= " AND mc.statut = 1";
$sql.= " AND u.rowid = m.fk_user_valid";
$sql.= " AND mc.fk_mailing=m.rowid";
$sql.= " ORDER BY mc.date_envoi DESC, m.rowid DESC";
$resql=$db->query($sql);
if ($resql)
{
$i = 0 ;
$num = $db->num_rows($resql);
$var=true;
while ($i < $num)
{
$obj = $db->fetch_object($resql);
$histo[$numaction]=array('type'=>'mailing','id'=>$obj->id,'date'=>$obj->da,'note'=>$obj->note,'percent'=>$obj->percent,
'acode'=>$obj->acode,'libelle'=>$obj->libelle,
'userid'=>$obj->user_id,'code'=>$obj->code);
$numaction++;
$i++;
}
}
else
{
dolibarr_print_error($db);
}
// Affichage actions sur contact
print '<table width="100%" class="noborder">';
print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Date").'</td>';
print '<td align="center">'.$langs->trans("Status").'</td>';
print '<td>'.$langs->trans("Actions").'</td>';
print '<td>'.$langs->trans("Comments").'</td>';
print '<td>'.$langs->trans("Author").'</td></tr>';
foreach ($histo as $key=>$value)
{
$var=!$var;
print "<tr $bc[$var]>";
// Date
print "<td>". dolibarr_print_date($histo[$key]['date'],"%d %b %Y %H:%M") ."</td>";
// Status/Percent
if ($histo[$key]['percent'] < 100) {
print "<td align=\"center\">".$histo[$key]['percent']."%</td>";
}
else {
print "<td align=\"center\">".$langs->trans("Done")."</td>";
}
// Action
print '<td>';
if ($histo[$key]['type']=='action')
{
print '<a href="'.DOL_URL_ROOT.'/comm/action/fiche.php?id='.$histo[$key]['id'].'">'.img_object($langs->trans("ShowTask"),"task").' ';
$transcode=$langs->trans("Action".$histo[$key]['acode']);
$libelle=($transcode!="Action".$histo[$key]['acode']?$transcode:$histo[$key]['libelle']);
print dolibarr_trunc($libelle,30);
print '</a>';
}
if ($histo[$key]['type']=='mailing')
{
print '<a href="'.DOL_URL_ROOT.'/comm/mailing/fiche.php?id='.$histo[$key]['id'].'">'.img_object($langs->trans("ShowEMailing"),"email").' ';
$transcode=$langs->trans("Action".$histo[$key]['acode']);
$libelle=($transcode!="Action".$histo[$key]['acode']?$transcode:'Send mass mailing');
print dolibarr_trunc($libelle,30);
print '</a>';
}
print '</td>';
// Note
print '<td>'.dolibarr_trunc($histo[$key]['note'], 30).'</td>';
// Author
print '<td>';
if ($histo[$key]['code'])
{
print '<a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$histo[$key]['userid'].'">'.img_object($langs->trans("ShowUser"),'user').' '.$histo[$key]['code'].'</a>';
}
else print "&nbsp;";
print "</td>";
print "</tr>\n";
}
print "</table>"; print "</table>";
print '<br>';
} }
$db->close(); $db->close();

View File

@ -54,7 +54,7 @@ $search_email=isset($_GET["search_email"])?$_GET["search_email"]:$_POST["search_
$type = isset($_GET["type"])?$_GET["type"]:$_POST["type"]; $type = isset($_GET["type"])?$_GET["type"]:$_POST["type"];
$view=isset($_GET["view"])?$_GET["view"]:$_POST["view"]; $view=isset($_GET["view"])?$_GET["view"]:$_POST["view"];
$contactname=isset($_GET["contactname"])?$_GET["contactname"]:$_POST["contactname"]; $sall=isset($_GET["contactname"])?$_GET["contactname"]:$_POST["contactname"];
$sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"]; $sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"];
$sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"]; $sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"];
$page = isset($_GET["page"])?$_GET["page"]:$_POST["page"]; $page = isset($_GET["page"])?$_GET["page"]:$_POST["page"];
@ -72,11 +72,13 @@ if ($view == 'mail') { $text="(Vue EMail)"; }
if ($view == 'recent') { $text="(Récents)"; } if ($view == 'recent') { $text="(Récents)"; }
$titre = $langs->trans("ListOfContacts")." $text"; $titre = $langs->trans("ListOfContacts")." $text";
if ($_POST["button_removefilter"] == $langs->trans("RemoveFilter")) { if ($_POST["button_removefilter"])
{
$search_nom=""; $search_nom="";
$search_prenom=""; $search_prenom="";
$search_societe=""; $search_societe="";
$search_email=""; $search_email="";
$sall="";
} }
@ -88,7 +90,6 @@ if ($_POST["button_removefilter"] == $langs->trans("RemoveFilter")) {
$sql = "SELECT s.idp, s.nom, p.idp as cidp, p.name, p.firstname, p.email, p.phone, p.phone_mobile, p.fax "; $sql = "SELECT s.idp, s.nom, p.idp as cidp, p.name, p.firstname, p.email, p.phone, p.phone_mobile, p.fax ";
$sql .= "FROM ".MAIN_DB_PREFIX."socpeople as p "; $sql .= "FROM ".MAIN_DB_PREFIX."socpeople as p ";
$sql .= "LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON (s.idp = p.fk_soc) "; $sql .= "LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON (s.idp = p.fk_soc) ";
$sql .= "WHERE 1=1 "; $sql .= "WHERE 1=1 ";
if ($_GET["userid"]) // statut commercial if ($_GET["userid"]) // statut commercial
@ -97,21 +98,20 @@ if ($_GET["userid"]) // statut commercial
} }
if ($search_nom) // filtre sur le nom if ($search_nom) // filtre sur le nom
{ {
$sql .= " AND upper(p.name) like '%".$search_nom."%'"; $sql .= " AND p.name like '%".$search_nom."%'";
} }
if ($search_prenom) // filtre sur le prenom if ($search_prenom) // filtre sur le prenom
{ {
$sql .= " AND upper(p.firstname) like '%".$search_prenom."%'"; $sql .= " AND p.firstname like '%".$search_prenom."%'";
} }
if ($search_societe) // filtre sur la societe if ($search_societe) // filtre sur la societe
{ {
$sql .= " AND upper(s.nom) like '%".$search_societe."%'"; $sql .= " AND s.nom like '%".$search_societe."%'";
} }
if ($search_email) // filtre sur l'email if ($search_email) // filtre sur l'email
{ {
$sql .= " AND upper(p.email) like '%".$search_email."%'"; $sql .= " AND p.email like '%".$search_email."%'";
} }
if ($type == "f") // filtre sur type if ($type == "f") // filtre sur type
{ {
$sql .= " AND fournisseur = 1"; $sql .= " AND fournisseur = 1";
@ -120,12 +120,10 @@ if ($type == "c") // filtre sur type
{ {
$sql .= " AND client = 1"; $sql .= " AND client = 1";
} }
if ($sall)
if ($contactname)
{ {
$sql .= " AND (p.name like '%".$contactname."%' OR p.firstname like '%".$contactname."%') "; $sql .= " AND (p.name like '%".$sall."%' OR p.firstname like '%".$sall."%' OR p.email like '%".$sall."%') ";
} }
if ($socid) if ($socid)
{ {
$sql .= " AND s.idp = $socid"; $sql .= " AND s.idp = $socid";
@ -144,7 +142,7 @@ $result = $db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows(); $num = $db->num_rows($result);
$i = 0; $i = 0;
print_barre_liste($titre ,$page, "index.php", '&amp;begin='.$_GET["begin"].'&amp;view='.$_GET["view"].'&amp;userid='.$_GET["userid"], $sortfield, $sortorder,'',$num); print_barre_liste($titre ,$page, "index.php", '&amp;begin='.$_GET["begin"].'&amp;view='.$_GET["view"].'&amp;userid='.$_GET["userid"], $sortfield, $sortorder,'',$num);
@ -152,9 +150,9 @@ if ($result)
print '<table class="liste" width="100%">'; print '<table class="liste" width="100%">';
if ($contactname) if ($sall)
{ {
print $langs->trans("Filter")." (".$langs->trans("Lastname")." ".$langs->trans("or")." ".$langs->trans("Firstname")."): $contactname"; print $langs->trans("Filter")." (".$langs->trans("Lastname").", ".$langs->trans("Firstname")." ".$langs->trans("or")." ".$langs->trans("EMail")."): ".$sall;
} }
// Ligne des titres // Ligne des titres
@ -212,8 +210,8 @@ if ($result)
} }
print '<td class="liste_titre" align="right">'; print '<td class="liste_titre" align="right">';
print '<input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">'; print '<input type="image" value="button_search" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">';
print '&nbsp; <input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/searchclear.png" name="button_removefilter" alt="'.$langs->trans("RemoveFilter").'">'; print '&nbsp; <input type="image" value="button_removefilter" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/searchclear.png" name="button_removefilter" alt="'.$langs->trans("RemoveFilter").'">';
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
print '</form>'; print '</form>';