' . "\n";
-
- print '';
- print ' ';
+
+ include DOL_DOCUMENT_ROOT . '/core/tpl/advtarget.tpl.php';
+
}
}
diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php
index 70efeccead3..890f107614d 100644
--- a/htdocs/comm/mailing/class/advtargetemailing.class.php
+++ b/htdocs/comm/mailing/class/advtargetemailing.class.php
@@ -39,7 +39,8 @@ class AdvanceTargetingMailing extends CommonObject
var $name;
var $entity;
- var $fk_mailing;
+ var $fk_element;
+ var $type_element;
var $filtervalue;
var $fk_user_author;
var $datec='';
@@ -92,7 +93,9 @@ class AdvanceTargetingMailing extends CommonObject
$error=0;
// Clean parameters
- if (isset($this->fk_mailing)) $this->fk_mailing=trim($this->fk_mailing);
+ if (isset($this->fk_element)) $this->fk_element=trim($this->fk_element);
+ if (isset($this->type_element)) $this->type_element=trim($this->type_element);
+
if (isset($this->name)) $this->name=trim($this->name);
if (isset($this->filtervalue)) $this->filtervalue=trim($this->filtervalue);
if (isset($this->fk_user_author)) $this->fk_user_author=trim($this->fk_user_author);
@@ -108,7 +111,8 @@ class AdvanceTargetingMailing extends CommonObject
$sql.= "name,";
$sql.= "entity,";
- $sql.= "fk_mailing,";
+ $sql.= "fk_element,";
+ $sql.= "type_element,";
$sql.= "filtervalue,";
$sql.= "fk_user_author,";
$sql.= "datec,";
@@ -119,7 +123,8 @@ class AdvanceTargetingMailing extends CommonObject
$sql.= " ".(! isset($this->name)?'NULL':"'".$this->db->escape($this->name)."'").",";
$sql.= " ".$conf->entity.",";
- $sql.= " ".(! isset($this->fk_mailing)?'NULL':"'".$this->db->escape($this->fk_mailing)."'").",";
+ $sql.= " ".(! isset($this->fk_element)?'NULL':"'".$this->db->escape($this->fk_element)."'").",";
+ $sql.= " ".(! isset($this->type_element)?'NULL':"'".$this->db->escape($this->type_element)."'").",";
$sql.= " ".(! isset($this->filtervalue)?'NULL':"'".$this->db->escape($this->filtervalue)."'").",";
$sql.= " ".$user->id.",";
$sql.= " '".$this->db->idate(dol_now())."',";
@@ -184,7 +189,8 @@ class AdvanceTargetingMailing extends CommonObject
$sql.= " t.name,";
$sql.= " t.entity,";
- $sql.= " t.fk_mailing,";
+ $sql.= " t.fk_element,";
+ $sql.= " t.type_element,";
$sql.= " t.filtervalue,";
$sql.= " t.fk_user_author,";
$sql.= " t.datec,";
@@ -206,7 +212,8 @@ class AdvanceTargetingMailing extends CommonObject
$this->name = $obj->name;
$this->entity = $obj->entity;
- $this->fk_mailing = $obj->fk_mailing;
+ $this->fk_element = $obj->fk_element;
+ $this->type_element = $obj->type_element;
$this->filtervalue = $obj->filtervalue;
$this->fk_user_author = $obj->fk_user_author;
$this->datec = $this->db->jdate($obj->datec);
@@ -240,7 +247,8 @@ class AdvanceTargetingMailing extends CommonObject
$sql.= " t.name,";
$sql.= " t.entity,";
- $sql.= " t.fk_mailing,";
+ $sql.= " t.fk_element,";
+ $sql.= " t.type_element,";
$sql.= " t.filtervalue,";
$sql.= " t.fk_user_author,";
$sql.= " t.datec,";
@@ -249,9 +257,9 @@ class AdvanceTargetingMailing extends CommonObject
$sql.= " FROM ".MAIN_DB_PREFIX."advtargetemailing as t";
if (!empty($id)) {
- $sql.= " WHERE t.fk_mailing = ".$id;
+ $sql.= " WHERE t.fk_element = ".$id." AND type_element='mailing'";
}else {
- $sql.= " WHERE t.fk_mailing = ".$this->fk_mailing;
+ $sql.= " WHERE t.fk_element = ".$this->fk_element." AND type_element='mailing'";
}
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
@@ -266,7 +274,73 @@ class AdvanceTargetingMailing extends CommonObject
$this->name = $obj->name;
$this->entity = $obj->entity;
- $this->fk_mailing = $obj->fk_mailing;
+ $this->fk_element = $obj->fk_element;
+ $this->type_element = $obj->type_element;
+ $this->filtervalue = $obj->filtervalue;
+ $this->fk_user_author = $obj->fk_user_author;
+ $this->datec = $this->db->jdate($obj->datec);
+ $this->fk_user_mod = $obj->fk_user_mod;
+ $this->tms = $this->db->jdate($obj->tms);
+
+ }
+ $this->db->free($resql);
+
+ return 1;
+ }
+ else
+ {
+ $this->error="Error ".$this->db->lasterror();
+ dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
+ return -1;
+ }
+ }
+
+
+
+
+ /**
+ * Load object in memory from the database
+ *
+ * @param int $id Id object
+ * @return int <0 if KO, >0 if OK
+ */
+ function fetch_by_element($id=0,$type_element='mailing')
+ {
+ global $langs;
+ $sql = "SELECT";
+ $sql.= " t.rowid,";
+
+ $sql.= " t.name,";
+ $sql.= " t.entity,";
+ $sql.= " t.fk_element,";
+ $sql.= " t.type_element,";
+ $sql.= " t.filtervalue,";
+ $sql.= " t.fk_user_author,";
+ $sql.= " t.datec,";
+ $sql.= " t.fk_user_mod,";
+ $sql.= " t.tms";
+
+ $sql.= " FROM ".MAIN_DB_PREFIX."advtargetemailing as t";
+ if (!empty($id)) {
+ $sql.= " WHERE t.fk_element = ".$id." AND type_element='$type_element'";
+ }else {
+ $sql.= " WHERE t.fk_element = ".$this->fk_element." AND type_element='$type_element'";
+ }
+
+ dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
+ $resql=$this->db->query($sql);
+ if ($resql)
+ {
+ if ($this->db->num_rows($resql))
+ {
+ $obj = $this->db->fetch_object($resql);
+
+ $this->id = $obj->rowid;
+
+ $this->name = $obj->name;
+ $this->entity = $obj->entity;
+ $this->fk_element = $obj->fk_element;
+ $this->type_element = $obj->type_element;
$this->filtervalue = $obj->filtervalue;
$this->fk_user_author = $obj->fk_user_author;
$this->datec = $this->db->jdate($obj->datec);
@@ -299,7 +373,8 @@ class AdvanceTargetingMailing extends CommonObject
$error=0;
// Clean parameters
- if (isset($this->fk_mailing)) $this->fk_mailing=trim($this->fk_mailing);
+ if (isset($this->fk_element)) $this->fk_element=trim($this->fk_element);
+ if (isset($this->type_element)) $this->type_element=trim($this->type_element);
if (isset($this->name)) $this->name=trim($this->name);
if (isset($this->filtervalue)) $this->filtervalue=trim($this->filtervalue);
if (isset($this->fk_user_author)) $this->fk_user_author=trim($this->fk_user_author);
@@ -315,14 +390,14 @@ class AdvanceTargetingMailing extends CommonObject
$sql.= " name=".(isset($this->name)?"'".$this->db->escape($this->name)."'":"''").",";
$sql.= " entity=".$conf->entity.",";
- $sql.= " fk_mailing=".(isset($this->fk_mailing)?$this->fk_mailing:"null").",";
+ $sql.= " fk_element=".(isset($this->fk_element)?$this->fk_element:"null").",";
+ $sql.= " type_element=".(isset($this->type_element)?"'".$this->db->escape($this->type_element)."'":"null").",";
$sql.= " filtervalue=".(isset($this->filtervalue)?"'".$this->db->escape($this->filtervalue)."'":"null").",";
$sql.= " fk_user_mod=".$user->id;
$sql.= " WHERE rowid=".$this->id;
$this->db->begin();
-
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
@@ -432,7 +507,7 @@ class AdvanceTargetingMailing extends CommonObject
global $langs,$conf;
if (!empty($arrayquery)) {
- $result=$this->fetch_by_mailing($this->fk_mailing);
+ $result=$this->fetch_by_mailing($this->fk_element);
$this->filtervalue=json_encode($arrayquery);
if ($result<0) {
return -1;
diff --git a/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php b/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php
index c7f425f8f7a..370fe720a6d 100644
--- a/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php
+++ b/htdocs/comm/mailing/class/html.formadvtargetemailing.class.php
@@ -417,13 +417,14 @@ class FormAdvTargetEmailing extends Form
*
* @return string HTML combo
*/
- public function selectAdvtargetemailingTemplate($htmlname='template_id',$selected=0,$showempty=0) {
+ public function selectAdvtargetemailingTemplate($htmlname='template_id',$selected=0,$showempty=0,$type_element='mailing') {
global $conf, $user, $langs;
$out = '';
- $sql = "SELECT c.rowid, c.name, c.fk_mailing";
+ $sql = "SELECT c.rowid, c.name, c.fk_element";
$sql .= " FROM " . MAIN_DB_PREFIX . "advtargetemailing as c";
+ $sql .= " WHERE type_element='$type_element'";
$sql .= " ORDER BY c.name";
dol_syslog ( get_class ( $this ) . "::".__METHOD__, LOG_DEBUG );
@@ -441,7 +442,7 @@ class FormAdvTargetEmailing extends Form
$obj = $this->db->fetch_object ( $resql );
$label = $obj->name;
if (empty($label)) {
- $label=$obj->fk_mailing;
+ $label=$obj->fk_element;
}
if ($selected > 0 && $selected == $obj->rowid) {
diff --git a/htdocs/core/tpl/advtarget.tpl.php b/htdocs/core/tpl/advtarget.tpl.php
new file mode 100644
index 00000000000..e1104ef84f6
--- /dev/null
+++ b/htdocs/core/tpl/advtarget.tpl.php
@@ -0,0 +1,521 @@
+
+ $(document).ready(function() {
+
+ // Click Function
+ $(":button[name=addcontact]").click(function() {
+ $(":hidden[name=action]").val("add");
+ $("#find_customer").submit();
+ });
+
+ $(":button[name=loadfilter]").click(function() {
+ $(":hidden[name=action]").val("loadfilter");
+ $("#find_customer").submit();
+ });
+
+ $(":button[name=deletefilter]").click(function() {
+ $(":hidden[name=action]").val("deletefilter");
+ $("#find_customer").submit();
+ });
+
+ $(":button[name=savefilter]").click(function() {
+ $(":hidden[name=action]").val("savefilter");
+ $("#find_customer").submit();
+ });
+
+ $(":button[name=createfilter]").click(function() {
+ $(":hidden[name=action]").val("createfilter");
+ $("#find_customer").submit();
+ });
+ });
+';
+
+
+ print_fiche_titre($langs->trans("AdvTgtTitle"));
+
+ print '
' . "\n";
+ print '' . "\n";
+ print '
' . "\n";
+
+ print '';
+ print ' ';
\ No newline at end of file
diff --git a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql
index 18c4cfe2246..6bb8508a70b 100644
--- a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql
+++ b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql
@@ -716,4 +716,3 @@ DROP TABLE llx_c_accountancy_category;
UPDATE llx_cronjob set entity = 1 where entity = 0 and label in ('RecurringInvoices', 'SendEmailsReminders');
UPDATE llx_cronjob set entity = 0 where entity = 1 and label in ('PurgeDeleteTemporaryFilesShort', 'MakeLocalDatabaseDumpShort');
-
diff --git a/htdocs/install/mysql/tables/llx_advtargetemailing.sql b/htdocs/install/mysql/tables/llx_advtargetemailing.sql
index 395558c700f..3698e5e6626 100644
--- a/htdocs/install/mysql/tables/llx_advtargetemailing.sql
+++ b/htdocs/install/mysql/tables/llx_advtargetemailing.sql
@@ -22,7 +22,8 @@ CREATE TABLE llx_advtargetemailing
rowid integer NOT NULL auto_increment PRIMARY KEY,
name varchar(180) NOT NULL,
entity integer NOT NULL DEFAULT 1,
- fk_mailing integer NOT NULL,
+ fk_element integer NOT NULL,
+ type_element varchar(180) NOT NULL,
filtervalue text,
fk_user_author integer NOT NULL,
datec datetime NOT NULL,
diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang
index d9e0e2b8cde..25a82ab2487 100644
--- a/htdocs/langs/fr_FR/mails.lang
+++ b/htdocs/langs/fr_FR/mails.lang
@@ -109,7 +109,7 @@ MailingNeedCommand2=Vous pouvez toutefois quand même les envoyer par l'interfac
ConfirmSendingEmailing=Si vous souhaitez envoyer l'e-mailing depuis cet écran, veuillez confirmer son envoi maintenant, depuis votre navigateur.
LimitSendingEmailing=Remarque: L'envoi d'Emailings à partir de l'interface web se fait en plusieurs fois pour des raisons de sécurité et de timeout, %s bénéficiaires à la fois pour chaque session d'envoi.
TargetsReset=Vider liste
-ToClearAllRecipientsClickHere=Pour vider la liste des destinataires de cet emailing, cliquez sur le bouton
+ToClearAllRecipientsClickHere=Pour vider la liste des destinataires, cliquez sur le bouton
ToAddRecipientsChooseHere=Pour ajouter des destinataires, choisir dans les listes ci-dessous
NbOfEMailingsReceived=Emailings de masse reçus
NbOfEMailingsSend=Emailings de masse envoyés
diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php
index 508fe892ebe..b99257da275 100644
--- a/htdocs/societe/class/api_contacts.class.php
+++ b/htdocs/societe/class/api_contacts.class.php
@@ -122,6 +122,7 @@ class Contacts extends DolibarrApi
$sql = "SELECT t.rowid";
$sql.= " FROM " . MAIN_DB_PREFIX . "socpeople as t";
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX . "socpeople_extrafields as te ON te.fk_object = t.rowid";
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) {
// We need this table joined to the select in order to filter by sale
$sql.= ", " . MAIN_DB_PREFIX . "societe_commerciaux as sc";
diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php
index 73c782ddf7c..2b355b56eb7 100644
--- a/htdocs/societe/class/api_thirdparties.class.php
+++ b/htdocs/societe/class/api_thirdparties.class.php
@@ -129,6 +129,7 @@ class Thirdparties extends DolibarrApi
$sql = "SELECT t.rowid";
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
$sql.= " FROM ".MAIN_DB_PREFIX."societe as t";
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX . "societe_extrafields as te ON te.fk_object = t.rowid";
if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socids) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
$sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st";