36require_once DOL_DOCUMENT_ROOT.
'/core/class/commonobject.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/class/commonsocialnetworks.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/commonpeople.class.php';
52 public $element =
'contact';
57 public $table_element =
'socpeople';
62 public $picto =
'contact';
92 public $fields = array(
93 'rowid' => array(
'type' =>
'integer',
'label' =>
'TechnicalID',
'enabled' => 1,
'visible' => -2,
'noteditable' => 1,
'notnull' => 1,
'index' => 1,
'position' => 1,
'comment' =>
'Id',
'css' =>
'left'),
94 'entity' => array(
'type' =>
'integer',
'label' =>
'Entity',
'default' =>
'1',
'enabled' => 1,
'visible' => 3,
'notnull' => 1,
'position' => 30,
'index' => 1),
95 'ref_ext' => array(
'type' =>
'varchar(255)',
'label' =>
'Ref ext',
'enabled' => 1,
'visible' => 3,
'position' => 35),
96 'civility' => array(
'type' =>
'varchar(6)',
'label' =>
'Civility',
'enabled' => 1,
'visible' => 3,
'position' => 40),
97 'lastname' => array(
'type' =>
'varchar(50)',
'label' =>
'Lastname',
'enabled' => 1,
'visible' => 1,
'position' => 45,
'showoncombobox' => 1,
'searchall' => 1),
98 'name_alias' => array(
'type' =>
'varchar(255)',
'label' =>
'Name alias',
'enabled' => 1,
'visible' => -1,
'position' => 46,
'searchall' => 1),
99 'firstname' => array(
'type' =>
'varchar(50)',
'label' =>
'Firstname',
'enabled' => 1,
'visible' => 1,
'position' => 50,
'showoncombobox' => 1,
'searchall' => 1),
100 'poste' => array(
'type' =>
'varchar(80)',
'label' =>
'PostOrFunction',
'enabled' => 1,
'visible' => -1,
'position' => 52),
101 'address' => array(
'type' =>
'varchar(255)',
'label' =>
'Address',
'enabled' => 1,
'visible' => -1,
'position' => 55),
102 'zip' => array(
'type' =>
'varchar(25)',
'label' =>
'Zip',
'enabled' => 1,
'visible' => -1,
'position' => 60),
103 'town' => array(
'type' =>
'varchar(50)',
'label' =>
'Town',
'enabled' => 1,
'visible' => -1,
'position' => 65),
104 'fk_departement' => array(
'type' =>
'integer',
'label' =>
'Fk departement',
'enabled' => 1,
'visible' => 3,
'position' => 70),
105 'fk_pays' => array(
'type' =>
'integer',
'label' =>
'Fk pays',
'enabled' => 1,
'visible' => 3,
'position' => 75),
106 'fk_soc' => array(
'type' =>
'integer',
'label' =>
'ThirdParty',
'enabled' => 1,
'visible' => 1,
'position' => 77,
'searchall' => 1),
107 'birthday' => array(
'type' =>
'date',
'label' =>
'Birthday',
'enabled' => 1,
'visible' => -1,
'position' => 80),
108 'phone' => array(
'type' =>
'varchar(30)',
'label' =>
'Phone',
'enabled' => 1,
'visible' => 1,
'position' => 90,
'searchall' => 1),
109 'phone_perso' => array(
'type' =>
'varchar(30)',
'label' =>
'PhonePerso',
'enabled' => 1,
'visible' => -1,
'position' => 95,
'searchall' => 1),
110 'phone_mobile' => array(
'type' =>
'varchar(30)',
'label' =>
'PhoneMobile',
'enabled' => 1,
'visible' => 1,
'position' => 100,
'searchall' => 1),
111 'fax' => array(
'type' =>
'varchar(30)',
'label' =>
'Fax',
'enabled' => 1,
'visible' => -1,
'position' => 105,
'searchall' => 1),
112 'email' => array(
'type' =>
'varchar(255)',
'label' =>
'Email',
'enabled' => 1,
'visible' => 1,
'position' => 110,
'searchall' => 1),
113 'socialnetworks' => array(
'type' =>
'text',
'label' =>
'SocialNetworks',
'enabled' => 1,
'visible' => 3,
'position' => 115),
114 'photo' => array(
'type' =>
'varchar(255)',
'label' =>
'Photo',
'enabled' => 1,
'visible' => 3,
'position' => 170),
115 'priv' => array(
'type' =>
'smallint(6)',
'label' =>
'ContactVisibility',
'enabled' => 1,
'visible' => 1,
'notnull' => 1,
'position' => 175),
116 'fk_stcommcontact' => array(
'type' =>
'integer',
'label' =>
'ProspectStatus',
'enabled' => 1,
'visible' => -1,
'notnull' => 1,
'position' => 220),
117 'fk_prospectcontactlevel' => array(
'type' =>
'varchar(12)',
'label' =>
'ProspectLevel',
'enabled' => 1,
'visible' => -1,
'position' => 255),
119 'note_private' => array(
'type' =>
'html',
'label' =>
'NotePrivate',
'enabled' => 1,
'visible' => 3,
'position' => 195,
'searchall' => 1),
120 'note_public' => array(
'type' =>
'html',
'label' =>
'NotePublic',
'enabled' => 1,
'visible' => 3,
'position' => 200,
'searchall' => 1),
121 'default_lang' => array(
'type' =>
'varchar(6)',
'label' =>
'Default lang',
'enabled' => 1,
'visible' => 3,
'position' => 205),
122 'canvas' => array(
'type' =>
'varchar(32)',
'label' =>
'Canvas',
'enabled' => 1,
'visible' => 3,
'position' => 210),
123 'datec' => array(
'type' =>
'datetime',
'label' =>
'DateCreation',
'enabled' => 1,
'visible' => -1,
'position' => 300),
124 'tms' => array(
'type' =>
'timestamp',
'label' =>
'DateModification',
'enabled' => 1,
'visible' => -1,
'notnull' => 1,
'position' => 305),
125 'fk_user_creat' => array(
'type' =>
'integer',
'label' =>
'UserAuthor',
'enabled' => 1,
'visible' => 3,
'position' => 310),
126 'fk_user_modif' => array(
'type' =>
'integer',
'label' =>
'UserModif',
'enabled' => 1,
'visible' => 3,
'position' => 315),
127 'statut' => array(
'type' =>
'tinyint(4)',
'label' =>
'Status',
'enabled' => 1,
'visible' => 1,
'notnull' => 1,
'position' => 500),
128 'import_key' => array(
'type' =>
'varchar(14)',
'label' =>
'ImportId',
'enabled' => 1,
'visible' => -1,
'position' => 1000),
132 public $civility_code;
148 public $birthday_alert;
251 public $socialnetworks;
271 public $phone_mobile;
292 public $default_lang;
297 public $ref_facturation;
307 public $ref_commande;
338 public $cacheprospectstatus = array();
343 public $fk_prospectlevel;
347 public $statut_commercial;
352 public $stcomm_picto;
364 $this->ismultientitymanaged = 1;
365 $this->isextrafieldmanaged = 1;
367 if (!isModEnabled(
'mailing')) {
368 $this->fields[
'no_email'][
'enabled'] = 0;
372 $this->fields[
'fk_soc'][
'enabled'] = 0;
373 $this->fields[
'fk_soc'][
'searchall'] = 0;
378 $this->fields[
'fk_stcommcontact'][
'enabled'] = 0;
379 $this->fields[
'fk_prospectcontactlevel'][
'enabled'] = 0;
383 foreach ($this->fields as $key => $val) {
384 if (isset($val[
'enabled']) && empty($val[
'enabled'])) {
385 unset($this->fields[$key]);
412 global $user, $hookmanager;
417 $sql =
"SELECT count(sp.rowid) as nb";
418 $sql .=
" FROM ".MAIN_DB_PREFIX.
"socpeople as sp";
419 if (!$user->hasRight(
'societe',
'client',
'voir')) {
420 $sql .=
", ".MAIN_DB_PREFIX.
"societe as s";
421 $sql .=
", ".MAIN_DB_PREFIX.
"societe_commerciaux as sc";
422 $sql .=
" WHERE sp.fk_soc = s.rowid AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
425 $sql .=
" ".$clause.
" sp.entity IN (".
getEntity($this->element).
")";
426 $sql .=
" AND (sp.priv='0' OR (sp.priv='1' AND sp.fk_user_creat = ".((int) $user->id).
"))";
427 if ($user->socid > 0) {
428 $sql .=
" AND sp.fk_soc = ".((int) $user->socid);
431 if (is_object($hookmanager)) {
432 $parameters = array();
433 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $this);
434 $sql .= $hookmanager->resPrint;
437 $resql = $this->db->query($sql);
439 while ($obj = $this->db->fetch_object($resql)) {
440 $this->nb[
"contacts"] = $obj->nb;
442 $this->db->free($resql);
446 $this->error = $this->db->lasterror();
458 public function create($user, $notrigger = 0)
468 $this->name_alias = trim($this->name_alias);
469 $this->lastname = $this->lastname ? trim($this->lastname) : trim($this->
name);
470 $this->firstname = trim($this->firstname);
472 if (empty($this->socid)) {
475 if (empty($this->priv)) {
478 if (empty($this->
statut)) {
482 $this->entity = ((isset($this->entity) && is_numeric($this->entity)) ? $this->entity : $conf->entity);
484 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"socpeople (";
487 $sql .=
", name_alias";
488 $sql .=
", lastname";
489 $sql .=
", firstname";
490 $sql .=
", fk_user_creat";
492 $sql .=
", fk_stcommcontact";
497 $sql .=
", import_key";
498 $sql .=
") VALUES (";
499 $sql .=
"'".$this->db->idate($now).
"',";
500 if ($this->socid > 0) {
501 $sql .=
" ".((int) $this->socid).
",";
505 $sql .=
"'".$this->db->escape($this->name_alias).
"',";
506 $sql .=
"'".$this->db->escape($this->lastname).
"',";
507 $sql .=
"'".$this->db->escape($this->firstname).
"',";
508 $sql .=
" ".($user->id > 0 ? ((int) $user->id) :
"null").
",";
509 $sql .=
" ".((int) $this->priv).
",";
511 $sql .=
" ".((int) $this->
statut).
",";
512 $sql .=
" ".(!empty($this->canvas) ?
"'".$this->db->escape($this->canvas).
"'" :
"null").
",";
513 $sql .=
" ".((int) $this->entity).
",";
514 $sql .=
"'".$this->db->escape($this->ref_ext).
"',";
515 $sql .=
" ".(!empty($this->import_key) ?
"'".$this->db->escape($this->import_key).
"'" :
"null");
518 dol_syslog(get_class($this).
"::create", LOG_DEBUG);
519 $resql = $this->db->query($sql);
521 $this->
id = $this->db->last_insert_id(MAIN_DB_PREFIX.
"socpeople");
524 $result = $this->
update($this->
id, $user, 1,
'add');
527 $this->error = $this->db->lasterror();
535 $this->error = $this->db->lasterror();
539 if (!$error && !$notrigger) {
552 $this->db->rollback();
553 dol_syslog(get_class($this).
"::create ".$this->error, LOG_ERR);
557 $this->error = $this->db->lasterror();
559 $this->db->rollback();
560 dol_syslog(get_class($this).
"::create ".$this->error, LOG_ERR);
575 public function update($id, $user =
null, $notrigger = 0, $action =
'update', $nosyncuser = 0)
583 $this->entity = ((isset($this->entity) && is_numeric($this->entity)) ? $this->entity : $conf->entity);
586 $this->ref_ext = (empty($this->ref_ext) ?
'' : trim($this->ref_ext));
587 $this->name_alias = trim($this->name_alias);
588 $this->lastname = trim($this->lastname) ? trim($this->lastname) : trim($this->lastname);
589 $this->firstname = trim($this->firstname);
590 $this->email = trim($this->email);
591 $this->phone_pro = trim($this->phone_pro);
592 $this->phone_perso = trim($this->phone_perso);
593 $this->phone_mobile = trim($this->phone_mobile);
594 $this->photo = trim($this->photo);
595 $this->fax = trim($this->fax);
596 $this->zip = (empty($this->zip) ?
'' : trim($this->zip));
597 $this->town = (empty($this->town) ?
'' : trim($this->town));
598 $this->country_id = (empty($this->country_id) || $this->country_id < 0) ? 0 : $this->country_id;
599 if (empty($this->
statut)) {
602 if (empty($this->civility_code) && !is_numeric($this->civility_id)) {
603 $this->civility_code = $this->civility_id;
609 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"socpeople SET";
610 if ($this->socid > 0) {
611 $sql .=
" fk_soc = ".((int) $this->socid).
",";
612 } elseif ($this->socid == -1) {
613 $sql .=
" fk_soc = NULL,";
615 $sql .=
" civility='".$this->db->escape($this->civility_code).
"'";
616 $sql .=
", name_alias='".$this->db->escape($this->name_alias).
"'";
617 $sql .=
", lastname='".$this->db->escape($this->lastname).
"'";
618 $sql .=
", firstname='".$this->db->escape($this->firstname).
"'";
619 $sql .=
", address='".$this->db->escape($this->address).
"'";
620 $sql .=
", zip='".$this->db->escape($this->zip).
"'";
621 $sql .=
", town='".$this->db->escape($this->town).
"'";
622 $sql .=
", ref_ext = ".(!empty($this->ref_ext) ?
"'".$this->db->escape($this->ref_ext).
"'" :
"NULL");
623 $sql .=
", fk_pays=".($this->country_id > 0 ? $this->country_id :
'NULL');
624 $sql .=
", fk_departement=".($this->state_id > 0 ? $this->state_id :
'NULL');
625 $sql .=
", poste='".$this->db->escape($this->poste).
"'";
626 $sql .=
", fax='".$this->db->escape($this->fax).
"'";
627 $sql .=
", email='".$this->db->escape($this->email).
"'";
628 $sql .=
", socialnetworks = '".$this->db->escape(json_encode($this->socialnetworks)).
"'";
629 $sql .=
", photo='".$this->db->escape($this->photo).
"'";
630 $sql .=
", birthday=".($this->birthday ?
"'".$this->db->idate($this->birthday).
"'" :
"null");
631 $sql .=
", note_private = ".(isset($this->note_private) ?
"'".$this->db->escape($this->note_private).
"'" :
"NULL");
632 $sql .=
", note_public = ".(isset($this->note_public) ?
"'".$this->db->escape($this->note_public).
"'" :
"NULL");
633 $sql .=
", phone = ".(isset($this->phone_pro) ?
"'".$this->db->escape($this->phone_pro).
"'" :
"NULL");
634 $sql .=
", phone_perso = ".(isset($this->phone_perso) ?
"'".$this->db->escape($this->phone_perso).
"'" :
"NULL");
635 $sql .=
", phone_mobile = ".(isset($this->phone_mobile) ?
"'".$this->db->escape($this->phone_mobile).
"'" :
"NULL");
636 $sql .=
", priv = '".$this->db->escape($this->priv).
"'";
637 $sql .=
", fk_prospectlevel = '".$this->db->escape($this->fk_prospectlevel).
"'";
638 if (isset($this->stcomm_id)) {
639 $sql .=
", fk_stcommcontact = ".($this->stcomm_id > 0 || $this->stcomm_id == -1 ? $this->stcomm_id :
"0");
641 $sql .=
", statut = ".((int) $this->
statut);
642 $sql .=
", fk_user_modif=".($user->id > 0 ?
"'".$this->db->escape($user->id).
"'" :
"NULL");
643 $sql .=
", default_lang=".($this->default_lang ?
"'".$this->db->escape($this->default_lang).
"'" :
"NULL");
644 $sql .=
", entity = ".((int) $this->entity);
645 $sql .=
" WHERE rowid = ".((int) $id);
647 dol_syslog(get_class($this).
"::update", LOG_DEBUG);
648 $result = $this->db->query($sql);
650 unset($this->country_code);
651 unset($this->country);
652 unset($this->state_code);
672 if (!$error && $this->user_id > 0) {
674 $tmpobj =
new User($this->db);
675 $tmpobj->fetch($this->user_id);
676 $usermustbemodified = 0;
677 if ($tmpobj->office_phone != $this->phone_pro) {
678 $tmpobj->office_phone = $this->phone_pro;
679 $usermustbemodified++;
681 if ($tmpobj->office_fax != $this->fax) {
682 $tmpobj->office_fax = $this->fax;
683 $usermustbemodified++;
685 if ($tmpobj->address != $this->address) {
686 $tmpobj->address = $this->address;
687 $usermustbemodified++;
689 if ($tmpobj->town != $this->town) {
690 $tmpobj->town = $this->town;
691 $usermustbemodified++;
693 if ($tmpobj->zip != $this->zip) {
694 $tmpobj->zip = $this->zip;
695 $usermustbemodified++;
697 if ($tmpobj->zip != $this->zip) {
698 $tmpobj->state_id = $this->state_id;
699 $usermustbemodified++;
701 if ($tmpobj->country_id != $this->country_id) {
702 $tmpobj->country_id = $this->country_id;
703 $usermustbemodified++;
705 if ($tmpobj->email != $this->email) {
706 $tmpobj->email = $this->email;
707 $usermustbemodified++;
709 if (!empty(array_diff($tmpobj->socialnetworks, $this->socialnetworks))) {
710 $tmpobj->socialnetworks = $this->socialnetworks;
711 $usermustbemodified++;
713 if ($usermustbemodified) {
714 $result = $tmpobj->update($user, 0, 1, 1, 1);
721 if (!$error && !$notrigger) {
734 dol_syslog(get_class($this).
"::update Error ".$this->error, LOG_ERR);
735 $this->db->rollback();
739 $this->error = $this->db->lasterror().
' sql='.$sql;
740 $this->db->rollback();
764 } elseif ($mode == 1) {
766 } elseif ($mode == 2) {
783 global $conf, $langs;
804 $info[
"title"] = $this->poste;
806 if ($this->socid > 0) {
808 $soc->fetch($this->socid);
811 if ($soc->client == 1) {
812 $info[
"businessCategory"] =
"Customers";
814 if ($soc->client == 2) {
815 $info[
"businessCategory"] =
"Prospects";
817 if ($soc->fournisseur == 1) {
818 $info[
"businessCategory"] =
"Suppliers";
853 $info[
"objectclass"][4] =
"phpgwContact";
855 $info[
'uidnumber'] = $this->id;
857 $info[
'phpgwTz'] = 0;
858 $info[
'phpgwMailType'] =
'INTERNET';
859 $info[
'phpgwMailHomeType'] =
'INTERNET';
861 $info[
"phpgwContactTypeId"] =
'n';
862 $info[
"phpgwContactCatId"] = 0;
863 $info[
"phpgwContactAccess"] =
"public";
871 $info[
"phpgwContactOwner"] = 1;
874 $info[
"rfc822Mailbox"] = $this->email;
876 if ($this->phone_mobile) {
877 $info[
"phpgwCellTelephoneNumber"] = $this->phone_mobile;
903 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"socpeople SET";
904 $sql .=
" birthday = ".($this->birthday ?
"'".$this->db->idate($this->birthday).
"'" :
"null");
905 $sql .=
", photo = ".($this->photo ?
"'".$this->db->escape($this->photo).
"'" :
"null");
907 $sql .=
", fk_user_modif = ".((int) $user->id);
909 $sql .=
" WHERE rowid = ".((int) $id);
911 dol_syslog(get_class($this).
"::update_perso this->birthday=".$this->birthday.
" -", LOG_DEBUG);
912 $resql = $this->db->query($sql);
915 $this->error = $this->db->lasterror();
920 if (!empty($this->birthday_alert)) {
922 $sql_check =
"SELECT rowid FROM " . MAIN_DB_PREFIX .
"user_alert WHERE type = 1 AND fk_contact = " . ((int) $id) .
" AND fk_user = " . ((int) $user->id);
923 $result_check = $this->db->query($sql_check);
924 if (!$result_check || ($this->db->num_rows($result_check) < 1)) {
926 $sql =
"INSERT INTO " . MAIN_DB_PREFIX .
"user_alert(type, fk_contact, fk_user) ";
927 $sql .=
"VALUES (1," . ((int) $id) .
"," . ((int) $user->id) .
")";
928 $result = $this->db->query($sql);
931 $this->error = $this->db->lasterror();
937 $sql =
"DELETE FROM " . MAIN_DB_PREFIX .
"user_alert ";
938 $sql .=
"WHERE type=1 AND fk_contact=" . ((int) $id) .
" AND fk_user=" . ((int) $user->id);
939 $result = $this->db->query($sql);
942 $this->error = $this->db->lasterror();
947 if (!$error && !$notrigger) {
960 dol_syslog(get_class($this).
"::update Error ".$this->error, LOG_ERR);
961 $this->db->rollback();
977 public function fetch($id, $user =
null, $ref_ext =
'', $email =
'', $loadalsoroles = 0)
981 dol_syslog(get_class($this).
"::fetch id=".$id.
" ref_ext=".$ref_ext.
" email=".$email, LOG_DEBUG);
983 if (empty($id) && empty($ref_ext) && empty($email)) {
984 $this->error =
'BadParameter';
988 $langs->loadLangs(array(
"dict",
"companies"));
990 $sql =
"SELECT c.rowid, c.entity, c.fk_soc, c.ref_ext, c.civility as civility_code, c.name_alias, c.lastname, c.firstname,";
991 $sql .=
" c.address, c.statut, c.zip, c.town,";
992 $sql .=
" c.fk_pays as country_id,";
993 $sql .=
" c.fk_departement as state_id,";
994 $sql .=
" c.birthday,";
995 $sql .=
" c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email,";
996 $sql .=
" c.socialnetworks,";
998 $sql .=
" c.priv, c.note_private, c.note_public, c.default_lang, c.canvas,";
999 $sql .=
" c.fk_prospectlevel, c.fk_stcommcontact, st.libelle as stcomm, st.picto as stcomm_picto,";
1000 $sql .=
" c.import_key,";
1001 $sql .=
" c.datec as date_creation, c.tms as date_modification,";
1002 $sql .=
" co.label as country, co.code as country_code,";
1003 $sql .=
" d.nom as state, d.code_departement as state_code,";
1004 $sql .=
" u.rowid as user_id, u.login as user_login,";
1005 $sql .=
" s.nom as socname, s.address as socaddress, s.zip as soccp, s.town as soccity, s.default_lang as socdefault_lang";
1006 $sql .=
" FROM ".MAIN_DB_PREFIX.
"socpeople as c";
1007 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as co ON c.fk_pays = co.rowid";
1008 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_departements as d ON c.fk_departement = d.rowid";
1009 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"user as u ON c.rowid = u.fk_socpeople";
1010 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s ON c.fk_soc = s.rowid";
1011 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_stcommcontact as st ON c.fk_stcommcontact = st.id';
1013 $sql .=
" WHERE c.rowid = ".((int) $id);
1015 $sql .=
" WHERE c.entity IN (".getEntity($this->element).
")";
1017 $sql .=
" AND c.ref_ext = '".$this->db->escape($ref_ext).
"'";
1020 $sql .=
" AND c.email = '".$this->db->escape($email).
"'";
1024 $resql = $this->db->query($sql);
1026 $num = $this->db->num_rows($resql);
1028 $this->error =
'Fetch found several records. Rename one of contact to avoid duplicate.';
1033 $obj = $this->db->fetch_object($resql);
1035 $this->
id = $obj->rowid;
1036 $this->entity = $obj->entity;
1037 $this->
ref = $obj->rowid;
1038 $this->ref_ext = $obj->ref_ext;
1040 $this->civility_code = $obj->civility_code;
1041 $this->civility = $obj->civility_code ? ($langs->trans(
"Civility".$obj->civility_code) !=
"Civility".$obj->civility_code ? $langs->trans(
"Civility".$obj->civility_code) : $obj->civility_code) :
'';
1043 $this->name_alias = $obj->name_alias;
1044 $this->lastname = $obj->lastname;
1045 $this->firstname = $obj->firstname;
1046 $this->address = $obj->address;
1047 $this->zip = $obj->zip;
1048 $this->town = $obj->town;
1050 $this->date_creation = $this->db->jdate($obj->date_creation);
1051 $this->date_modification = $this->db->jdate($obj->date_modification);
1053 $this->state_id = $obj->state_id;
1054 $this->state_code = $obj->state_code;
1055 $this->state = $obj->state;
1057 $this->country_id = $obj->country_id;
1058 $this->country_code = $obj->country_id ? $obj->country_code :
'';
1059 $this->country = $obj->country_id ? ($langs->trans(
'Country'.$obj->country_code) !=
'Country'.$obj->country_code ? $langs->transnoentities(
'Country'.$obj->country_code) : $obj->country) :
'';
1061 $this->fk_soc = $obj->fk_soc;
1062 $this->socid = $obj->fk_soc;
1063 $this->socname = $obj->socname;
1064 $this->poste = $obj->poste;
1065 $this->
statut = $obj->statut;
1067 $this->fk_prospectlevel = $obj->fk_prospectlevel;
1069 $transcode = $langs->trans(
'StatusProspect'.$obj->fk_stcommcontact);
1070 $libelle = ($transcode !=
'StatusProspect'.$obj->fk_stcommcontact ? $transcode : $obj->stcomm);
1071 $this->stcomm_id = $obj->fk_stcommcontact;
1072 $this->statut_commercial = $libelle;
1073 $this->stcomm_picto = $obj->stcomm_picto;
1075 $this->phone_pro = trim($obj->phone);
1076 $this->fax = trim($obj->fax);
1077 $this->phone_perso = trim($obj->phone_perso);
1078 $this->phone_mobile = trim($obj->phone_mobile);
1080 $this->email = $obj->email;
1081 $this->socialnetworks = ($obj->socialnetworks ? (array) json_decode($obj->socialnetworks,
true) : array());
1082 $this->photo = $obj->photo;
1083 $this->priv = $obj->priv;
1084 $this->mail = $obj->email;
1086 $this->birthday = $this->db->jdate($obj->birthday);
1087 $this->note = $obj->note_private;
1088 $this->note_private = $obj->note_private;
1089 $this->note_public = $obj->note_public;
1090 $this->default_lang = $obj->default_lang;
1091 $this->user_id = $obj->user_id;
1092 $this->user_login = $obj->user_login;
1093 $this->canvas = $obj->canvas;
1095 $this->import_key = $obj->import_key;
1101 $sql =
"SELECT u.rowid ";
1102 $sql .=
" FROM ".MAIN_DB_PREFIX.
"user as u";
1103 $sql .=
" WHERE u.fk_socpeople = ".((int) $this->
id);
1105 $resql = $this->db->query($sql);
1107 if ($this->db->num_rows($resql)) {
1108 $uobj = $this->db->fetch_object($resql);
1110 $this->user_id = $uobj->rowid;
1112 $this->db->free($resql);
1114 $this->error = $this->db->error();
1124 $sql =
"SELECT fk_user";
1125 $sql .=
" FROM ".MAIN_DB_PREFIX.
"user_alert";
1126 $sql .=
" WHERE fk_user = ".((int) $user->id).
" AND fk_contact = ".((int) $id);
1128 $resql = $this->db->query($sql);
1130 if ($this->db->num_rows($resql)) {
1131 $obj = $this->db->fetch_object($resql);
1133 $this->birthday_alert = 1;
1135 $this->db->free($resql);
1137 $this->error = $this->db->error();
1143 if ($loadalsoroles) {
1145 if ($resultRole < 0) {
1152 $this->error = $langs->trans(
"RecordNotFound");
1156 $this->error = $this->db->error();
1171 unset($this->gender);
1173 if (in_array($this->civility_id, array(
'MR')) || in_array($this->civility_code, array(
'MR'))) {
1174 $this->gender =
'man';
1175 } elseif (in_array($this->civility_id, array(
'MME',
'MLE')) || in_array($this->civility_code, array(
'MME',
'MLE'))) {
1176 $this->gender =
'woman';
1194 $sql =
"SELECT tc.element, count(ec.rowid) as nb";
1195 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact as ec, ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1196 $sql .=
" WHERE ec.fk_c_type_contact = tc.rowid";
1197 $sql .=
" AND fk_socpeople = ".((int) $this->
id);
1198 $sql .=
" AND tc.source = 'external'";
1199 $sql .=
" GROUP BY tc.element";
1201 dol_syslog(get_class($this).
"::load_ref_elements", LOG_DEBUG);
1203 $resql = $this->db->query($sql);
1205 while ($obj = $this->db->fetch_object($resql)) {
1207 if ($obj->element ==
'facture') {
1208 $this->ref_facturation = $obj->nb;
1209 } elseif ($obj->element ==
'contrat') {
1210 $this->ref_contrat = $obj->nb;
1211 } elseif ($obj->element ==
'commande') {
1212 $this->ref_commande = $obj->nb;
1213 } elseif ($obj->element ==
'propal') {
1214 $this->ref_propal = $obj->nb;
1218 $this->db->free($resql);
1221 $this->error = $this->db->lasterror();
1233 public function delete($user, $notrigger = 0)
1239 if (!$error && !$notrigger) {
1241 $result = $this->
call_trigger(
'CONTACT_DELETE', $user);
1250 $sql =
"SELECT ec.rowid";
1251 $sql .=
" FROM ".MAIN_DB_PREFIX.
"element_contact ec,";
1252 $sql .=
" ".MAIN_DB_PREFIX.
"c_type_contact tc";
1253 $sql .=
" WHERE ec.fk_socpeople=".((int) $this->
id);
1254 $sql .=
" AND ec.fk_c_type_contact=tc.rowid";
1255 $sql .=
" AND tc.source='external'";
1257 $resql = $this->db->query($sql);
1259 $num = $this->db->num_rows($resql);
1262 while ($i < $num && !$error) {
1263 $obj = $this->db->fetch_object($resql);
1265 $sqldel =
"DELETE FROM ".MAIN_DB_PREFIX.
"element_contact";
1266 $sqldel .=
" WHERE rowid = ".((int) $obj->rowid);
1268 $result = $this->db->query($sqldel);
1271 $this->error = $this->db->error().
' sql='.$sqldel;
1278 $this->error = $this->db->error().
' sql='.$sql;
1284 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_contacts WHERE fk_socpeople = ".((int) $this->
id);
1286 $resql = $this->db->query($sql);
1289 $this->error .= $this->db->lasterror();
1296 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"notify_def WHERE fk_contact = ".((int) $this->
id);
1298 $resql = $this->db->query($sql);
1301 $this->error .= $this->db->lasterror();
1308 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"categorie_contact WHERE fk_socpeople = ".((int) $this->
id);
1310 $resql = $this->db->query($sql);
1313 $this->error .= $this->db->lasterror();
1319 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"socpeople";
1320 $sql .=
" WHERE rowid = ".((int) $this->
id);
1322 $result = $this->db->query($sql);
1325 $this->error = $this->db->error().
' sql='.$sql;
1339 $this->db->commit();
1342 $this->db->rollback();
1357 $sql =
"SELECT c.rowid, c.datec as datec, c.fk_user_creat,";
1358 $sql .=
" c.tms as tms, c.fk_user_modif";
1359 $sql .=
" FROM ".MAIN_DB_PREFIX.
"socpeople as c";
1360 $sql .=
" WHERE c.rowid = ".((int) $id);
1362 $resql = $this->db->query($sql);
1364 if ($this->db->num_rows($resql)) {
1365 $obj = $this->db->fetch_object($resql);
1367 $this->
id = $obj->rowid;
1369 $this->user_creation_id = $obj->fk_user_creat;
1370 $this->user_modification_id = $obj->fk_user_modif;
1371 $this->date_creation = $this->db->jdate($obj->datec);
1372 $this->date_modification = $this->db->jdate($obj->tms);
1375 $this->db->free($resql);
1377 print $this->db->error();
1388 $sql =
"SELECT count(mc.email) as nb";
1389 $sql .=
" FROM ".MAIN_DB_PREFIX.
"mailing_cibles as mc, ".MAIN_DB_PREFIX.
"mailing as m";
1390 $sql .=
" WHERE mc.fk_mailing=m.rowid AND mc.email = '".$this->db->escape($this->email).
"' ";
1391 $sql .=
" AND m.entity IN (".getEntity($this->element).
") AND mc.statut NOT IN (-1,0)";
1393 $resql = $this->db->query($sql);
1395 $obj = $this->db->fetch_object($resql);
1398 $this->db->free($resql);
1401 $this->error = $this->db->error();
1414 global $conf, $langs, $user;
1419 return [
'optimize' => $langs->trans(
"ShowContact")];
1421 if (!empty($this->photo) && class_exists(
'Form')) {
1422 $photo =
'<div class="photointooltip floatright">';
1423 $photo .=
Form::showphoto(
'contact', $this, 0, 40, 0,
'photoref',
'mini', 0);
1425 $datas[
'photo'] = $photo;
1428 $datas[
'picto'] =
img_picto(
'', $this->picto).
' <u class="paddingrightonly">'.$langs->trans(
"Contact").
'</u> ' . $this->
getLibStatut(4);
1429 $datas[
'name'] =
'<br><b>'.$langs->trans(
"Name").
':</b> '.$this->
getFullName($langs);
1431 if (!empty($this->poste)) {
1432 $datas[
'job'] =
'<br><b>'.$langs->trans(
"Poste").
':</b> '.$this->poste;
1434 $datas[
'email'] =
'<br><b>'.$langs->trans(
"EMail").
':</b> '.$this->email;
1435 $phonelist = array();
1436 $country_code = empty($this->country_code) ?
'' : $this->country_code;
1437 if ($this->phone_pro) {
1438 $phonelist[] =
dol_print_phone($this->phone_pro, $country_code, $this->
id, 0,
'',
' ',
'phone');
1440 if ($this->phone_mobile) {
1441 $phonelist[] =
dol_print_phone($this->phone_mobile, $country_code, $this->
id, 0,
'',
' ',
'mobile');
1443 if ($this->phone_perso) {
1444 $phonelist[] =
dol_print_phone($this->phone_perso, $country_code, $this->
id, 0,
'',
' ',
'phone');
1446 $datas[
'phonelist'] =
'<br><b>'.$langs->trans(
"Phone").
':</b> '.implode(
' ', $phonelist);
1447 $datas[
'address'] =
'<br><b>'.$langs->trans(
"Address").
':</b> '.
dol_format_address($this, 1,
' ', $langs);
1465 public function getNomUrl($withpicto = 0, $option =
'', $maxlen = 0, $moreparam =
'', $save_lastsearch_value = -1, $notooltip = 0, $morecss =
'')
1467 global $conf, $langs, $hookmanager;
1469 if (!empty($conf->dol_no_mouse_hover)) {
1476 'objecttype' => $this->element,
1477 'option' => $option,
1479 $classfortooltip =
'classfortooltip';
1482 $classfortooltip =
'classforajaxtooltip';
1483 $dataparams =
' data-params="'.dol_escape_htmltag(json_encode($params)).
'"';
1489 $url = DOL_URL_ROOT.
'/contact/card.php?id='.$this->id;
1491 if ($option !==
'nolink') {
1493 $add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
1494 if ($save_lastsearch_value == -1 && isset($_SERVER[
"PHP_SELF"]) && preg_match(
'/list\.php/', $_SERVER[
"PHP_SELF"])) {
1495 $add_save_lastsearch_values = 1;
1497 if ($url && $add_save_lastsearch_values) {
1498 $url .=
'&save_lastsearch_values=1';
1505 if (empty($notooltip)) {
1507 $label = $langs->trans(
"ShowContact");
1508 $linkclose .=
' alt="'.dol_escape_htmltag($label, 1).
'"';
1510 $linkclose .= ($label ?
' title="'.dol_escape_htmltag($label, 1).
'"' :
' title="tocomplete"');
1511 $linkclose .= $dataparams.
' class="'.$classfortooltip.($morecss ?
' '.$morecss :
'').
'"';
1513 $linkclose = ($morecss ?
' class="'.$morecss.
'"' :
'');
1516 if ($option ==
'nolink' || empty($url)) {
1517 $linkstart =
'<span';
1519 $linkstart =
'<a href="'.$url.
'"';
1521 $linkstart .= $linkclose.
'>';
1522 if ($option ==
'nolink' || empty($url)) {
1523 $linkend =
'</span>';
1528 $result .= $linkstart;
1531 if ($withpicto < 0) {
1532 $result .=
'<!-- picto photo contact --><span class="nopadding userimg'.($morecss ?
' '.$morecss :
'').
'">'.
Form::showphoto(
'contact', $this, 0, 0, 0,
'userphoto'.($withpicto == -3 ?
'small' :
''),
'mini', 0, 1).
'</span>';
1533 if ($withpicto != 2 && $withpicto != -2) {
1537 $result .=
img_object(($notooltip ?
'' : $label), ($this->picto ? $this->picto :
'generic'), ($notooltip ? (($withpicto != 2) ?
'class="pictofixedwidth valignmiddle"' :
'') :
'class="'.(($withpicto != 2) ?
'pictofixedwidth valignmiddle' :
'').
'"'), 0, 0, $notooltip ? 0 : 1);
1540 if ($withpicto != 2 && $withpicto != -2) {
1544 $result .= $linkend;
1547 $hookmanager->initHooks(array(
'contactdao'));
1548 $parameters = array(
'id' => $this->
id,
'getnomurl' => &$result);
1549 $reshook = $hookmanager->executeHooks(
'getNomUrl', $parameters, $this, $action);
1551 $result = $hookmanager->resPrint;
1553 $result .= $hookmanager->resPrint;
1568 $code = ($this->civility_code ? $this->civility_code : (!empty($this->civility_id) ? $this->civility : (!empty($this->civilite) ? $this->civilite :
'')));
1573 $langs->load(
"dict");
1574 return $langs->getLabelFromKey($this->db,
"Civility".$code,
"c_civility",
"code",
"label", $code);
1601 $labelStatus = array(
1602 0 =>
'ActivityCeased',
1605 5 =>
'ActivityCeased',
1607 $labelStatusShort = array(
1608 0 =>
'ActivityCeased',
1611 5 =>
'ActivityCeased',
1614 $statusType =
'status4';
1615 if ($status == 0 || $status == 5) {
1616 $statusType =
'status5';
1619 $label = $langs->transnoentitiesnoconv($labelStatus[$status]);
1620 $labelshort = $langs->transnoentitiesnoconv($labelStatusShort[$status]);
1622 return dolGetStatus($label, $labelshort,
'', $statusType, $mode);
1637 if ($status ==
'1') {
1638 return $langs->trans(
'ContactPrivate');
1640 return $langs->trans(
'ContactPublic');
1656 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"societe ORDER BY rowid LIMIT 1";
1657 $resql = $this->db->query($sql);
1659 $obj = $this->db->fetch_object($resql);
1661 $socid = $obj->rowid;
1668 $this->specimen = 1;
1669 $this->lastname =
'DOLIBARR';
1670 $this->firstname =
'SPECIMEN';
1671 $this->address =
'21 jump street';
1672 $this->zip =
'99999';
1673 $this->town =
'MyTown';
1674 $this->country_id = 1;
1675 $this->country_code =
'FR';
1676 $this->country =
'France';
1677 $this->email =
'specimen@specimen.com';
1678 $this->socialnetworks = array(
1679 'skype' =>
'tom.hanson',
1680 'twitter' =>
'tomhanson',
1681 'linkedin' =>
'tomhanson',
1683 $this->phone_pro =
'0909090901';
1684 $this->phone_perso =
'0909090902';
1685 $this->phone_mobile =
'0909090903';
1686 $this->fax =
'0909090909';
1688 $this->note_public =
'This is a comment (public)';
1689 $this->note_private =
'This is a comment (private)';
1691 $this->socid = $socid;
1705 global $conf, $langs, $user;
1710 if ($this->
statut == $status) {
1719 $sql =
"UPDATE ".MAIN_DB_PREFIX.
"socpeople";
1720 $sql .=
" SET statut = ".((int) $this->
statut);
1721 $sql .=
", fk_user_modif = ".((int) $user->id);
1722 $sql .=
" WHERE rowid = ".((int) $this->
id);
1723 $result = $this->db->query($sql);
1725 dol_syslog(get_class($this).
"::setstatus", LOG_DEBUG);
1728 $result = $this->
call_trigger(
'CONTACT_ENABLEDISABLE', $user);
1736 $this->db->rollback();
1739 $this->db->commit();
1756 require_once DOL_DOCUMENT_ROOT.
'/categories/class/categorie.class.php';
1757 return parent::setCategoriesCommon($categories, Categorie::TYPE_CONTACT);
1771 'socpeople',
'societe_contacts'
1790 $sql =
"SELECT tc.rowid, tc.element, tc.source, tc.code, tc.libelle as label, sc.rowid as contactroleid, sc.fk_soc as socid";
1791 $sql .=
" FROM ".MAIN_DB_PREFIX.
"societe_contacts as sc, ".MAIN_DB_PREFIX.
"c_type_contact as tc";
1792 $sql .=
" WHERE tc.rowid = sc.fk_c_type_contact";
1793 $sql .=
" AND tc.source = 'external' AND tc.active=1";
1794 $sql .=
" AND sc.fk_socpeople = ".((int) $this->
id);
1795 $sql .=
" AND sc.entity IN (".getEntity(
'societe').
')';
1797 $resql = $this->db->query($sql);
1799 $this->roles = array();
1801 $num = $this->db->num_rows($resql);
1803 while ($obj = $this->db->fetch_object($resql)) {
1804 $transkey =
"TypeContact_".$obj->element.
"_".$obj->source.
"_".$obj->code;
1805 $libelle_element = $langs->trans(
'ContactDefault_'.$obj->element);
1806 $this->roles[$obj->contactroleid] = array(
'id' => $obj->rowid,
'socid' => $obj->socid,
'element' => $obj->element,
'source' => $obj->source,
'code' => $obj->code,
'label' => $libelle_element.
' - '.($langs->trans($transkey) != $transkey ? $langs->trans($transkey) : $obj->label));
1811 $this->error = $this->db->lasterror();
1812 $this->errors[] = $this->db->lasterror();
1815 if (empty($error)) {
1833 if ($element ==
'action') {
1834 $element =
'agenda';
1837 $sql =
"SELECT sc.fk_socpeople as id, sc.fk_c_type_contact";
1838 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_type_contact tc";
1839 $sql .=
", ".MAIN_DB_PREFIX.
"societe_contacts sc";
1840 $sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"socpeople sp";
1841 $sql .=
" ON sc.fk_socpeople = sp.rowid AND sp.statut = 1";
1842 $sql .=
" WHERE sc.fk_soc =".((int) $this->socid);
1843 $sql .=
" AND sc.fk_c_type_contact=tc.rowid";
1844 $sql .=
" AND tc.element = '".$this->db->escape($element).
"'";
1845 $sql .=
" AND sp.entity IN (".getEntity(
'contact').
")";
1846 $sql .=
" AND tc.active = 1";
1849 $resql = $this->db->query($sql);
1851 $num = $this->db->num_rows($resql);
1854 $obj = $this->db->fetch_object($resql);
1855 $tab[] = array(
'fk_socpeople' => $obj->id,
'type_contact' => $obj->fk_c_type_contact);
1862 $this->error = $this->db->error();
1881 if (!isset($this->roles)) {
1887 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"societe_contacts WHERE fk_socpeople=".((int) $this->
id).
" AND entity IN (".
getEntity(
"contact").
")";
1889 $result = $this->db->query($sql);
1891 $this->errors[] = $this->db->lasterror().
' sql='.$sql;
1894 if (count($this->roles) > 0) {
1895 foreach ($this->roles as $keyRoles => $valRoles) {
1897 if (is_array($valRoles)) {
1898 $idrole = $valRoles[
'id'];
1900 $idrole = $valRoles;
1904 if (is_array($valRoles)) {
1905 $socid = $valRoles[
'socid'];
1907 $socid = $this->socid;
1911 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"societe_contacts";
1912 $sql .=
" (entity,";
1913 $sql .=
"date_creation,";
1915 $sql .=
"fk_c_type_contact,";
1916 $sql .=
"fk_socpeople) ";
1917 $sql .=
" VALUES (".$conf->entity.
",";
1918 $sql .=
"'".$this->db->idate(
dol_now()).
"',";
1919 $sql .= $socid.
", ";
1920 $sql .= $idrole.
" , ";
1924 $result = $this->db->query($sql);
1926 $this->errors[] = $this->db->lasterror().
' sql='.$sql;
1933 if (empty($error)) {
1934 $this->db->commit();
1937 $this->error = implode(
' ', $this->errors);
1938 $this->db->rollback();
1953 $sql =
"SELECT id, code, libelle as label, picto FROM ".MAIN_DB_PREFIX.
"c_stcommcontact";
1955 $sql .=
" WHERE active = ".((int) $active);
1957 $resql = $this->db->query($sql);
1958 $num = $this->db->num_rows($resql);
1961 $obj = $this->db->fetch_object($resql);
1962 $this->cacheprospectstatus[$obj->id] = array(
'id' => $obj->id,
'code' => $obj->code,
'label' => ($langs->trans(
"ST_".strtoupper($obj->code)) ==
"ST_".strtoupper($obj->code)) ? $obj->label : $langs->trans(
"ST_".strtoupper($obj->code)),
'picto' => $obj->picto);
1988 $lib = $langs->trans(
"ProspectLevel".$fk_prospectlevel);
1990 if ($lib ==
"ProspectLevel".$fk_prospectlevel) {
1991 $lib = $langs->getLabelFromKey($this->db, $fk_prospectlevel,
'c_prospectlevel',
'code',
'label');
2006 return $this->
update($this->
id, $user);
2018 return $this->
libProspCommStatut($this->stcomm_id, $mode, $label, $this->stcomm_picto);
2037 $langs->load(
'customers');
2040 if ($statut ==
'-1' || $statut ==
'ST_NO') {
2041 return img_action($langs->trans(
"StatusProspect-1"), -1, $picto).
' '.$langs->trans(
"StatusProspect-1");
2042 } elseif ($statut ==
'0' || $statut ==
'ST_NEVER') {
2043 return img_action($langs->trans(
"StatusProspect0"), 0, $picto).
' '.$langs->trans(
"StatusProspect0");
2044 } elseif ($statut ==
'1' || $statut ==
'ST_TODO') {
2045 return img_action($langs->trans(
"StatusProspect1"), 1, $picto).
' '.$langs->trans(
"StatusProspect1");
2046 } elseif ($statut ==
'2' || $statut ==
'ST_PEND') {
2047 return img_action($langs->trans(
"StatusProspect2"), 2, $picto).
' '.$langs->trans(
"StatusProspect2");
2048 } elseif ($statut ==
'3' || $statut ==
'ST_DONE') {
2049 return img_action($langs->trans(
"StatusProspect3"), 3, $picto).
' '.$langs->trans(
"StatusProspect3");
2051 return img_action(($langs->trans(
"StatusProspect".$statut) !=
"StatusProspect".$statut) ? $langs->trans(
"StatusProspect".$statut) : $label, 0, $picto).
' '.(($langs->trans(
"StatusProspect".$statut) !=
"StatusProspect".$statut) ? $langs->trans(
"StatusProspect".$statut) : $label);
2055 if ($statut ==
'-1' || $statut ==
'ST_NO') {
2056 return img_action($langs->trans(
"StatusProspect-1"), -1, $picto);
2057 } elseif ($statut ==
'0' || $statut ==
'ST_NEVER') {
2058 return img_action($langs->trans(
"StatusProspect0"), 0, $picto);
2059 } elseif ($statut ==
'1' || $statut ==
'ST_TODO') {
2060 return img_action($langs->trans(
"StatusProspect1"), 1, $picto);
2061 } elseif ($statut ==
'2' || $statut ==
'ST_PEND') {
2062 return img_action($langs->trans(
"StatusProspect2"), 2, $picto);
2063 } elseif ($statut ==
'3' || $statut ==
'ST_DONE') {
2064 return img_action($langs->trans(
"StatusProspect3"), 3, $picto);
2066 return img_action(($langs->trans(
"StatusProspect".$statut) !=
"StatusProspect".$statut) ? $langs->trans(
"StatusProspect".$statut) : $label, 0, $picto);
2070 if ($statut ==
'-1' || $statut ==
'ST_NO') {
2071 return img_action($langs->trans(
"StatusProspect-1"), -1, $picto).
' '.$langs->trans(
"StatusProspect-1");
2072 } elseif ($statut ==
'0' || $statut ==
'ST_NEVER') {
2073 return img_action($langs->trans(
"StatusProspect0"), 0, $picto).
' '.$langs->trans(
"StatusProspect0");
2074 } elseif ($statut ==
'1' || $statut ==
'ST_TODO') {
2075 return img_action($langs->trans(
"StatusProspect1"), 1, $picto).
' '.$langs->trans(
"StatusProspect1");
2076 } elseif ($statut ==
'2' || $statut ==
'ST_PEND') {
2077 return img_action($langs->trans(
"StatusProspect2"), 2, $picto).
' '.$langs->trans(
"StatusProspect2");
2078 } elseif ($statut ==
'3' || $statut ==
'ST_DONE') {
2079 return img_action($langs->trans(
"StatusProspect3"), 3, $picto).
' '.$langs->trans(
"StatusProspect3");
2081 return img_action(($langs->trans(
"StatusProspect".$statut) !=
"StatusProspect".$statut) ? $langs->trans(
"StatusProspect".$statut) : $label, 0, $picto).
' '.(($langs->trans(
"StatusProspect".$statut) !=
"StatusProspect".$statut) ? $langs->trans(
"StatusProspect".$statut) : $label);
2085 return "Error, mode/status not found";
2104 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"mailing_unsubscribe WHERE entity IN (".
getEntity(
'mailing', 0).
") AND email = '".$this->db->escape($this->email).
"'";
2105 $resql = $this->db->query($sql);
2107 $obj = $this->db->fetch_object($resql);
2108 $noemail = $obj->nb;
2109 if (empty($noemail)) {
2110 $sql =
"INSERT INTO ".MAIN_DB_PREFIX.
"mailing_unsubscribe(email, entity, date_creat) VALUES ('".$this->db->escape($this->email).
"', ".
getEntity(
'mailing', 0).
", '".$this->db->idate(
dol_now()).
"')";
2111 $resql = $this->db->query($sql);
2114 $this->error = $this->db->lasterror();
2115 $this->errors[] = $this->error;
2120 $this->error = $this->db->lasterror();
2121 $this->errors[] = $this->error;
2124 $sql =
"DELETE FROM ".MAIN_DB_PREFIX.
"mailing_unsubscribe WHERE email = '".$this->db->escape($this->email).
"' AND entity IN (".
getEntity(
'mailing', 0).
")";
2125 $resql = $this->db->query($sql);
2128 $this->error = $this->db->lasterror();
2129 $this->errors[] = $this->error;
2133 if (empty($error)) {
2134 $this->no_email = $no_email;
2135 $this->db->commit();
2138 $this->db->rollback();
2155 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"mailing_unsubscribe WHERE entity IN (".
getEntity(
'mailing').
") AND email = '".$this->db->escape($this->email).
"'";
2156 $resql = $this->db->query($sql);
2158 $obj = $this->db->fetch_object($resql);
2159 $this->no_email = $obj->nb;
2162 $this->error = $this->db->lasterror();
2163 $this->errors[] = $this->error;
2180 $selected = (empty($arraydata[
'selected']) ? 0 : $arraydata[
'selected']);
2182 $return =
'<div class="box-flex-item box-flex-grow-zero">';
2183 $return .=
'<div class="info-box info-box-sm">';
2184 $return .=
'<span class="info-box-icon bg-infobox-action">';
2186 if (property_exists($this,
'photo') && !is_null($this->photo)) {
2187 $return .=
Form::showphoto(
'contact', $this, 0, 60, 0,
'photokanban photoref photowithmargin photologintooltip',
'small', 0, 1);
2191 $return .=
'</span>';
2192 $return .=
'<div class="info-box-content">';
2193 $return .=
'<div class="info-box-ref inline-block tdoverflowmax150 valignmiddle">'.(method_exists($this,
'getNomUrl') ? $this->
getNomUrl(0) : $this->ref).
'</div>';
2194 if ($selected >= 0) {
2195 $return .=
'<input id="cb'.$this->id.
'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->
id.
'"'.($selected ?
' checked="checked"' :
'').
'>';
2197 if (property_exists($this,
'thirdparty') && is_object($this->thirdparty)) {
2198 $return .=
'<div class="info-box-ref tdoverflowmax150">'.$this->thirdparty->getNomUrl(1).
'</div>';
2208 if (method_exists($this,
'getLibStatut')) {
2209 $return .=
'<br><div class="info-box-status">'.$this->getLibStatut(3).
'</div>';
2211 $return .=
'</div>';
2212 $return .=
'</div>';
2213 $return .=
'</div>';
Parent class of all other business classes (invoices, contracts, proposals, orders,...
fetch_optionals($rowid=null, $optionsArray=null)
Function to get extra fields of an object into $this->array_options This method is in most cases call...
deleteExtraFields()
Delete all extra fields values for the current object.
static commonReplaceThirdparty(DoliDB $dbs, $origin_id, $dest_id, array $tables, $ignoreerrors=0)
Function used to replace a thirdparty id with another one.
insertExtraFields($trigger='', $userused=null)
Add/Update all extra fields values for the current object.
call_trigger($triggerName, $user)
Call trigger based on this instance.
Class to manage Dolibarr database access.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
trait CommonPeople
Support class for thirdparties, contacts, members, users or resources.
getFullName($langs, $option=0, $nameorder=-1, $maxlen=0)
Return full name (civility+' '+name+' '+lastname)
setUpperOrLowerCase()
Set to upper or ucwords/lower if needed.
trait CommonSocialNetworks
Superclass for social networks.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
dol_print_phone($phone, $countrycode='', $cid=0, $socid=0, $addlink='', $separ=" ", $withpicto='', $titlealt='', $adddivfloat=0, $morecss='')
Format phone numbers according to country.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
dol_format_address($object, $withcountry=0, $sep="\n", $outputlangs=null, $mode=0, $extralangcode='')
Return a formatted address (part address/zip/town/state) according to country rules.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
img_action($titlealt, $numaction, $picto='', $moreatt='')
Show logo action.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
getEntity($element, $shared=1, $currentobject=null)
Get list of entity id to use.
$conf db name
Only used if Module[ID]Name translation string is not found.
publicphonebutton2 phonegreen basiclayout basiclayout TotalHT VATCode TotalVAT TotalLT1 TotalLT2 TotalTTC TotalHT clearboth nowraponall TAKEPOS_SHOW_SUBPRICE right right right takeposterminal SELECT e e e e e statut