diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php
index fa6d77ad485..8cd49efe0b6 100644
--- a/htdocs/societe/class/societe.class.php
+++ b/htdocs/societe/class/societe.class.php
@@ -2597,6 +2597,140 @@ class Societe extends CommonObject
}
}
+ /**
+ * getTooltipContentArray
+ * @param array $params params to construct tooltip data
+ * @since v18
+ * @return array
+ */
+ public function getTooltipContentArray($params)
+ {
+ global $conf, $langs, $user;
+
+ $langs->loadLangs(['companies, commercial']);
+
+ $datas = [];
+
+ $option = $params['option'] ?? '';
+ $name = $this->name;
+
+ if (!empty($this->name_alias) && empty($noaliasinname)) {
+ $name .= ' ('.$this->name_alias.')';
+ }
+ if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
+ return ['optimize' => $langs->trans("ShowCompany")];
+ }
+
+ $label = '';
+ $label2 = '';
+
+ if (!empty($this->logo) && class_exists('Form')) {
+ $photo = '
';
+ $photo .= Form::showphoto('societe', $this, 0, 40, 0, 'photoref', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip.
+ $photo .= '
';
+ $datas['photo'] = $photo;
+ } elseif (!empty($this->logo_squarred) && class_exists('Form')) {
+ /*$label.= '';
+ $label.= Form::showphoto('societe', $this, 0, 40, 0, 'photowithmargin', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip.
+ $label.= '
';*/
+ }
+
+ $datas['divopen'] = '';
+
+ if ($option == 'customer' || $option == 'compta' || $option == 'category') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("Customer").'';
+ } elseif ($option == 'prospect' && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("Prospect").'';
+ } elseif ($option == 'supplier' || $option == 'category_supplier') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("Supplier").'';
+ } elseif ($option == 'agenda') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").'';
+ } elseif ($option == 'project') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").'';
+ } elseif ($option == 'margin') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").'';
+ } elseif ($option == 'contact') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").'';
+ } elseif ($option == 'ban') {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").'';
+ }
+
+ // By default
+ if (empty($datas['picto'] )) {
+ $datas['picto'] = img_picto('', $this->picto).' '.$langs->trans("ThirdParty").'';
+ }
+ if (isset($this->status)) {
+ $datas['status'] = ' '.$this->getLibStatut(5);
+ }
+ if (isset($this->client) && isset($this->fournisseur)) {
+ $datas['type'] = ' ' . $this->getTypeUrl(1);
+ }
+
+ $datas['name'] = '
'.$langs->trans('Name').': '.dol_escape_htmltag($this->name);
+ if (!empty($this->name_alias)) {
+ $datas['namealias'] = ' ('.dol_escape_htmltag($this->name_alias).')';
+ }
+
+ if ($this->email) {
+ $datas['email'] = '
'.img_picto('', 'email', 'class="pictofixedwidth"').$this->email;
+ }
+ if (!empty($this->phone) || !empty($this->fax)) {
+ $phonelist = array();
+ if ($this->phone) {
+ $phonelist[] = dol_print_phone($this->phone, $this->country_code, $this->id, 0, '', ' ', 'phone');
+ }
+ if ($this->fax) {
+ $phonelist[] = dol_print_phone($this->fax, $this->country_code, $this->id, 0, '', ' ', 'fax');
+ }
+ $datas['phonelist'] = '
'.implode(' ', $phonelist);
+ }
+
+ if (!empty($this->address)) {
+ $datas['address'] = '
'.$langs->trans("Address").': '.dol_format_address($this, 1, ' ', $langs); // Address + country
+ } elseif (!empty($this->country_code)) {
+ $datas['address'] = '
'.$langs->trans('Country').': '.$this->country_code;
+ }
+ if (!empty($this->tva_intra) || (!empty($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP) && strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'vatnumber') !== false)) {
+ $datas['vatintra'] = '
'.$langs->trans('VATIntra').': '.dol_escape_htmltag($this->tva_intra);
+ }
+
+ if (!empty($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP)) {
+ if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid1') !== false && $langs->trans('ProfId1'.$this->country_code) != '-') {
+ $datas['profid1'] = '
'.$langs->trans('ProfId1'.$this->country_code).': '.$this->idprof1;
+ }
+ if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid2') !== false && $langs->trans('ProfId2'.$this->country_code) != '-') {
+ $datas['profid2'] = '
'.$langs->trans('ProfId2'.$this->country_code).': '.$this->idprof2;
+ }
+ if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid3') !== false && $langs->trans('ProfId3'.$this->country_code) != '-') {
+ $datas['profid3'] = '
'.$langs->trans('ProfId3'.$this->country_code).': '.$this->idprof3;
+ }
+ if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid4') !== false && $langs->trans('ProfId4'.$this->country_code) != '-') {
+ $datas['profid4'] = '
'.$langs->trans('ProfId4'.$this->country_code).': '.$this->idprof4;
+ }
+ if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid5') !== false && $langs->trans('ProfId5'.$this->country_code) != '-') {
+ $datas['profid5'] = '
'.$langs->trans('ProfId5'.$this->country_code).': '.$this->idprof5;
+ }
+ if (strpos($conf->global->SOCIETE_SHOW_FIELD_IN_TOOLTIP, 'profid6') !== false && $langs->trans('ProfId6'.$this->country_code) != '-') {
+ $datas['profid6'] = '
'.$langs->trans('ProfId6'.$this->country_code).': '.$this->idprof6;
+ }
+ }
+ if (!empty($this->code_client) && ($this->client == 1 || $this->client == 3)) {
+ $datas['customercode'] = '
'.$langs->trans('CustomerCode').': '.$this->code_client;
+ }
+ if (!empty($this->code_fournisseur) && $this->fournisseur) {
+ $datas['suppliercode'] = '
'.$langs->trans('SupplierCode').': '.$this->code_fournisseur;
+ }
+ if (isModEnabled('accounting') && ($this->client == 1 || $this->client == 3)) {
+ $datas['accountancycustomercode'] = '
'.$langs->trans('CustomerAccountancyCode').': '.($this->code_compta ? $this->code_compta : $this->code_compta_client);
+ }
+ if (isModEnabled('accounting') && $this->fournisseur) {
+ $datas['accountancysuppliercode'] = '
'.$langs->trans('SupplierAccountancyCode').': '.$this->code_compta_fournisseur;
+ }
+
+ $datas['divclose'] = '
';
+
+ return $datas;
+ }
/**
* Return a link on thirdparty (with picto)
@@ -2787,8 +2921,18 @@ class Societe extends CommonObject
$label = $langs->trans("ShowCompany");
$linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"';
}
- $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"';
- $linkclose .= ' class="classfortooltip refurl valignmiddle"';
+ if (getDolGlobalInt('MAIN_ENABLE_AJAX_TOOLTIP')) {
+ $params = [
+ 'id' => $this->id,
+ 'objecttype' => $this->element,
+ 'option' => $option,
+ ];
+ $linkclose .= ' data-params='.json_encode($params).' id="societe-' . uniqid() . '" title="' . $langs->trans('Loading') . '"';
+ $linkclose .= ' class="classforajaxtooltip refurl valignmiddle"';
+ } else {
+ $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"';
+ $linkclose .= ' class="classfortooltip refurl valignmiddle"';
+ }
$target_value = array('_self', '_blank', '_parent', '_top');
if (in_array($target, $target_value)) {
$linkclose .= ' target="'.dol_escape_htmltag($target).'"';