42 $head[$tab][1] = $langs->trans(
"Contact");
43 $head[$tab][2] =
'card';
51 $head[$tab][1] = $langs->trans(
"LDAPCard");
52 $head[$tab][2] =
'ldap';
56 $head[$tab][0] =
dolBuildUrl(DOL_URL_ROOT.
'/contact/perso.php', [
'id' =>
$object->id]);
57 $head[$tab][1] = $langs->trans(
"PersonalInformations");
58 $head[$tab][2] =
'perso';
61 if (
isModEnabled(
'project') && $user->hasRight(
'project',
'lire')) {
64 require_once DOL_DOCUMENT_ROOT.
'/core/lib/memory.lib.php';
65 $cachekey =
'count_projects_contact_'.$object->id;
68 if (!is_null($dataretrieved)) {
69 $nbProject = $dataretrieved;
71 $sql =
'SELECT COUNT(n.rowid) as nb';
72 $sql .=
' FROM '.MAIN_DB_PREFIX.
'projet as n';
73 $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact as cc ON (n.rowid = cc.element_id)';
74 $sql .=
" WHERE cc.fk_socpeople = ".((int)
$object->id);
75 $sql .=
" AND cc.fk_c_type_contact IN (SELECT rowid FROM ".MAIN_DB_PREFIX.
"c_type_contact WHERE element='project' AND source='external')";
76 $sql .=
" AND n.entity IN (".getEntity(
'project').
")";
78 $resql =
$db->query($sql);
80 $obj =
$db->fetch_object($resql);
81 $nbProject = $obj->nb;
87 $head[$tab][0] =
dolBuildUrl(DOL_URL_ROOT.
'/contact/project.php', [
'id' =>
$object->id]);
88 $head[$tab][1] = $langs->trans(
"Projects");
90 $head[$tab][1] .=
'<span class="badge marginleftonlyshort">'.$nbProject.
'</span>';
92 $head[$tab][2] =
'project';
98 $head[$tab][0] =
dolBuildUrl(DOL_URL_ROOT.
'/contact/consumption.php', [
'id' =>
$object->id]);
99 $head[$tab][1] = $langs->trans(
"Referers");
100 $head[$tab][2] =
'consumption';
112 $nbNote = (empty(
$object->note_private) ? 0 : 1) + (empty(
$object->note_public) ? 0 : 1);
113 $head[$tab][0] =
dolBuildUrl(DOL_URL_ROOT.
'/contact/note.php', [
'id' =>
$object->id]);
114 $head[$tab][1] = $langs->trans(
"Note");
116 $head[$tab][1] .=
'<span class="badge marginleftonlyshort">'.$nbNote.
'</span>';
118 $head[$tab][2] =
'note';
122 require_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
123 require_once DOL_DOCUMENT_ROOT.
'/core/class/link.class.php';
125 $nbFiles = count(
dol_dir_list($upload_dir,
'files', 0,
'',
'(\.meta|_preview.*\.png)$'));
127 $head[$tab][0] =
dolBuildUrl(DOL_URL_ROOT.
'/contact/document.php', [
'id' =>
$object->id]);
128 $head[$tab][1] = $langs->trans(
"Documents");
129 if (($nbFiles + $nbLinks) > 0) {
130 $head[$tab][1] .=
'<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).
'</span>';
132 $head[$tab][2] =
'documents';
136 $head[$tab][0] =
dolBuildUrl(DOL_URL_ROOT.
'/contact/agenda.php', [
'id' =>
$object->id]);
137 $head[$tab][1] = $langs->trans(
"Events");
138 if (
isModEnabled(
'agenda') && ($user->hasRight(
'agenda',
'myactions',
'read') || $user->hasRight(
'agenda',
'allactions',
'read'))) {
141 require_once DOL_DOCUMENT_ROOT.
'/core/lib/memory.lib.php';
142 $cachekey =
'count_events_contact_'.$object->id;
144 if (!is_null($dataretrieved)) {
145 $nbEvent = $dataretrieved;
147 $sql =
"SELECT COUNT(id) as nb";
148 $sql .=
" FROM ".MAIN_DB_PREFIX.
"actioncomm";
149 $sql .=
" WHERE fk_contact = ".((int)
$object->id);
150 $resql =
$db->query($sql);
152 $obj =
$db->fetch_object($resql);
155 dol_syslog(
'Failed to count actioncomm '.
$db->lasterror(), LOG_ERR);
160 $head[$tab][1] .=
'/';
161 $head[$tab][1] .= $langs->trans(
"Agenda");
163 $head[$tab][1] .=
'<span class="badge marginleftonlyshort">'.$nbEvent.
'</span>';
166 $head[$tab][2] =
'agenda';
201 if (
isModEnabled(
'project') && $user->hasRight(
'projet',
'lire')) {
202 $langs->load(
"projects");
205 if (
isModEnabled(
'project') && $user->hasRight(
'projet',
'creer') && empty($nocreatelink)) {
206 $newcardbutton .= dolGetButtonTitle($langs->trans(
'AddProject'),
'',
'fa fa-plus-circle', DOL_URL_ROOT.
'/projet/card.php?socid='.
$object->id.
'&action=create&backtopage='.urlencode($backtopage));
210 print
load_fiche_titre($langs->trans(
"ProjectsHavingThisContact"), $newcardbutton.$morehtmlright,
'');
211 print
'<div class="div-table-responsive">';
212 print
"\n".
'<table class="noborder" width=100%>';
214 $sql =
'SELECT p.rowid as id, p.entity, p.title, p.ref, p.public, p.dateo as do, p.datee as de, p.fk_statut as status, p.fk_opp_status, p.opp_amount, p.opp_percent, p.tms as date_modification, p.budget_amount';
215 $sql .=
', cls.code as opp_status_code, ctc.libelle as type_label';
216 $sql .=
' FROM '.MAIN_DB_PREFIX.
'projet as p';
217 $sql .=
' LEFT JOIN '.MAIN_DB_PREFIX.
'c_lead_status as cls on p.fk_opp_status = cls.rowid';
218 $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'element_contact as cc ON (p.rowid = cc.element_id)';
219 $sql .=
' INNER JOIN '.MAIN_DB_PREFIX.
'c_type_contact as ctc ON (ctc.rowid = cc.fk_c_type_contact)';
220 $sql .=
" WHERE cc.fk_socpeople = ".((int)
$object->id);
221 $sql .=
" AND ctc.element='project' AND ctc.source='external'";
222 $sql .=
" AND p.entity IN (".getEntity(
'project').
")";
223 $sql .=
" ORDER BY p.dateo DESC";
225 $result =
$db->query($sql);
227 $num =
$db->num_rows($result);
229 print
'<tr class="liste_titre">';
230 print
'<td>'.$langs->trans(
"Ref").
'</td>';
231 print
'<td>'.$langs->trans(
"Name").
'</td>';
232 print
'<td>'.$langs->trans(
"ContactType").
'</td>';
233 print
'<td class="center">'.$langs->trans(
"DateStart").
'</td>';
234 print
'<td class="center">'.$langs->trans(
"DateEnd").
'</td>';
235 print
'<td class="right">'.$langs->trans(
"OpportunityAmountShort").
'</td>';
236 print
'<td class="center">'.$langs->trans(
"OpportunityStatusShort").
'</td>';
237 print
'<td class="right">'.$langs->trans(
"OpportunityProbabilityShort").
'</td>';
238 print
'<td class="right">'.$langs->trans(
"Status").
'</td>';
242 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
249 $obj =
$db->fetch_object($result);
250 $projecttmp->fetch($obj->id);
253 $userAccess = $projecttmp->restrictedProjectArea($user);
255 if ($user->hasRight(
'projet',
'lire') && $userAccess > 0) {
256 print
'<tr class="oddeven">';
260 print $projecttmp->getNomUrl(1);
264 print
'<td>'.dol_escape_htmltag($obj->title).
'</td>';
265 print
'<td>'.dol_escape_htmltag($obj->type_label).
'</td>';
267 print
'<td class="center">'.dol_print_date(
$db->jdate($obj->do),
"day").
'</td>';
269 print
'<td class="center">'.dol_print_date(
$db->jdate($obj->de),
"day").
'</td>';
271 print
'<td class="right">';
272 if ($obj->opp_status_code) {
273 print
price($obj->opp_amount, 1,
'', 1, -1, -1,
'');
277 print
'<td class="center">';
278 if ($obj->opp_status_code) {
279 print $langs->trans(
"OppStatus".$obj->opp_status_code);
283 print
'<td class="right">';
284 if ($obj->opp_percent) {
285 print
price($obj->opp_percent, 1,
'', 1, 0).
'%';
289 print
'<td class="right">'.$projecttmp->getLibStatut(5).
'</td>';
296 print
'<tr class="oddeven"><td colspan="8"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
if(! $sortfield) if(! $sortorder) $object
static count($dbs, $objecttype, $objectid)
Return nb of links.
Class to manage projects.
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
dolBuildUrl($url, $params=[], $addtoken=false, $anchor='')
Return path of url.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type, $mode='add', $filterorigmodule='')
Complete or removed entries into a head array (used to build tabs).
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_setcache($memoryid, $data, $expire=0, $filecache=0, $replace=0)
Save data into a memory area shared by all users, all sessions on server.
dol_getcache($memoryid, $filecache=0)
Read a memory area shared by all users, all sessions on server.