dolibarr 21.0.0-alpha
index.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2004-2018 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2014-2021 Charlene Benke <charlene.r@benke.fr>
6 * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
7 * Copyright (C) 2016 Ferran Marcet <fmarcet@2byte.es>
8 * Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
30// Load Dolibarr environment
31require '../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
33require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
34require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
35
36
37// Load translation files required by the page
38$langs->load("companies");
39
40
41// Initialize a technical object to manage hooks. Note that conf->hooks_modules contains array
42$hookmanager = new HookManager($db);
43$hookmanager->initHooks(array('thirdpartiesindex'));
44
45
46$socid = GETPOSTINT('socid');
47if ($user->socid) {
48 $socid = $user->socid;
49}
50
51// Security check
52$result = restrictedArea($user, 'societe|contact', 0, '', '', '', '');
53
54$thirdparty_static = new Societe($db);
55$contact_static = new Contact($db);
56
57if (!isset($form) || !is_object($form)) {
58 $form = new Form($db);
59}
60
61// Load $resultboxes
62$resultboxes = FormOther::getBoxesArea($user, "3");
63
64if (GETPOST('addbox')) {
65 // Add box (when submit is done from a form when ajax disabled)
66 require_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
67 $zone = GETPOSTINT('areacode');
68 $userid = GETPOSTINT('userid');
69 $boxorder = GETPOST('boxorder', 'aZ09');
70 $boxorder .= GETPOST('boxcombo', 'aZ09');
71 $result = InfoBox::saveboxorder($db, $zone, $boxorder, $userid);
72 if ($result > 0) {
73 setEventMessages($langs->trans("BoxAdded"), null);
74 }
75}
76
77$max = getDolGlobalInt('MAIN_SIZE_SHORTLIST_LIMIT', 5);
78
79
80/*
81 * View
82 */
83
84$transAreaType = $langs->trans("ThirdPartiesArea");
85$helpurl = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:M&oacute;dulo_Terceros';
86
87llxHeader("", $langs->trans("ThirdParties"), $helpurl);
88
89print load_fiche_titre($transAreaType, $resultboxes['selectboxlist'], 'companies');
90
91
92// Statistics area
93
94$third = array(
95 'customer' => 0,
96 'prospect' => 0,
97 'supplier' => 0,
98 'other' =>0
99);
100$total = 0;
101
102$sql = "SELECT s.rowid, s.client, s.fournisseur";
103$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
104if (!$user->hasRight('societe', 'client', 'voir')) {
105 $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
106}
107$sql .= ' WHERE s.entity IN ('.getEntity('societe').')';
108if (!$user->hasRight('societe', 'client', 'voir')) {
109 $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
110}
111if (!$user->hasRight('fournisseur', 'lire')) {
112 $sql .= " AND (s.fournisseur <> 1 OR s.client <> 0)"; // client=0, fournisseur=0 must be visible
113}
114// Add where from hooks
115$parameters = array('socid' => $socid);
116$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $thirdparty_static); // Note that $action and $object may have been modified by hook
117if (empty($reshook)) {
118 if ($socid > 0) {
119 $sql .= " AND s.rowid = ".((int) $socid);
120 }
121}
122$sql .= $hookmanager->resPrint;
123//print $sql;
124$result = $db->query($sql);
125if ($result) {
126 while ($objp = $db->fetch_object($result)) {
127 $found = 0;
128 if (isModEnabled('societe') && $user->hasRight('societe', 'lire') && !getDolGlobalString('SOCIETE_DISABLE_PROSPECTS') && !getDolGlobalString('SOCIETE_DISABLE_PROSPECTS_STATS') && ($objp->client == 2 || $objp->client == 3)) {
129 $found = 1;
130 $third['prospect']++;
131 }
132 if (isModEnabled('societe') && $user->hasRight('societe', 'lire') && !getDolGlobalString('SOCIETE_DISABLE_CUSTOMERS') && !getDolGlobalString('SOCIETE_DISABLE_CUSTOMERS_STATS') && ($objp->client == 1 || $objp->client == 3)) {
133 $found = 1;
134 $third['customer']++;
135 }
136 if (((isModEnabled('fournisseur') && $user->hasRight('fournisseur', 'lire') && !getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD')) || (isModEnabled('supplier_order') && $user->hasRight('supplier_order', 'lire')) || (isModEnabled('supplier_invoice') && $user->hasRight('supplier_invoice', 'lire'))) && !getDolGlobalString('SOCIETE_DISABLE_SUPPLIERS_STATS') && $objp->fournisseur) {
137 $found = 1;
138 $third['supplier']++;
139 }
140 if (isModEnabled('societe') && $objp->client == 0 && $objp->fournisseur == 0) {
141 $found = 1;
142 $third['other']++;
143 }
144 if ($found) {
145 $total++;
146 }
147 }
148} else {
149 dol_print_error($db);
150}
151
152$thirdpartygraph = '<div class="div-table-responsive-no-min">';
153$thirdpartygraph .= '<table class="noborder nohover centpercent">'."\n";
154$thirdpartygraph .= '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</th></tr>';
155if (!empty($conf->use_javascript_ajax) && ((round($third['prospect']) ? 1 : 0) + (round($third['customer']) ? 1 : 0) + (round($third['supplier']) ? 1 : 0) + (round($third['other']) ? 1 : 0) >= 2)) {
156 $thirdpartygraph .= '<tr><td class="center" colspan="2">';
157 $dataseries = array();
158 if (isModEnabled('societe') && $user->hasRight('societe', 'lire') && !getDolGlobalString('SOCIETE_DISABLE_PROSPECTS') && !getDolGlobalString('SOCIETE_DISABLE_PROSPECTS_STATS')) {
159 $dataseries[] = array($langs->transnoentitiesnoconv("Prospects"), round($third['prospect']));
160 }
161 if (isModEnabled('societe') && $user->hasRight('societe', 'lire') && !getDolGlobalString('SOCIETE_DISABLE_CUSTOMERS') && !getDolGlobalString('SOCIETE_DISABLE_CUSTOMERS_STATS')) {
162 $dataseries[] = array($langs->transnoentitiesnoconv("Customers"), round($third['customer']));
163 }
164 if (((isModEnabled('fournisseur') && $user->hasRight('fournisseur', 'lire') && !getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD')) || (isModEnabled('supplier_order') && $user->hasRight('supplier_order', 'lire')) || (isModEnabled('supplier_invoice') && $user->hasRight('supplier_invoice', 'lire'))) && !getDolGlobalString('SOCIETE_DISABLE_SUPPLIERS_STATS')) {
165 $dataseries[] = array($langs->transnoentitiesnoconv("Suppliers"), round($third['supplier']));
166 }
167 if (isModEnabled('societe')) {
168 $dataseries[] = array($langs->transnoentitiesnoconv("Others"), round($third['other']));
169 }
170 include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
171 $dolgraph = new DolGraph();
172 $dolgraph->SetData($dataseries);
173 $dolgraph->setShowLegend(2);
174 $dolgraph->setShowPercent(1);
175 $dolgraph->SetType(array('pie'));
176 $dolgraph->setHeight('200');
177 $dolgraph->draw('idgraphthirdparties');
178 $thirdpartygraph .= $dolgraph->show();
179 $thirdpartygraph .= '</td></tr>'."\n";
180} else {
181 $statstring = '';
182 if (isModEnabled('societe') && $user->hasRight('societe', 'lire') && !getDolGlobalString('SOCIETE_DISABLE_PROSPECTS') && !getDolGlobalString('SOCIETE_DISABLE_PROSPECTS_STATS')) {
183 $statstring .= "<tr>";
184 $statstring .= '<td><a href="'.DOL_URL_ROOT.'/societe/list.php?type=p">'.$langs->trans("Prospects").'</a></td><td class="right">'.round($third['prospect']).'</td>';
185 $statstring .= "</tr>";
186 }
187 if (isModEnabled('societe') && $user->hasRight('societe', 'lire') && !getDolGlobalString('SOCIETE_DISABLE_CUSTOMERS') && !getDolGlobalString('SOCIETE_DISABLE_CUSTOMERS_STATS')) {
188 $statstring .= "<tr>";
189 $statstring .= '<td><a href="'.DOL_URL_ROOT.'/societe/list.php?type=c">'.$langs->trans("Customers").'</a></td><td class="right">'.round($third['customer']).'</td>';
190 $statstring .= "</tr>";
191 }
192 $statstring2 = '';
193 if (((isModEnabled('fournisseur') && $user->hasRight('fournisseur', 'lire') && !getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD')) || (isModEnabled('supplier_order') && $user->hasRight('supplier_order', 'lire')) || (isModEnabled('supplier_invoice') && $user->hasRight('supplier_invoice', 'lire'))) && !getDolGlobalString('SOCIETE_DISABLE_SUPPLIERS_STATS')) {
194 $statstring2 .= "<tr>";
195 $statstring2 .= '<td><a href="'.DOL_URL_ROOT.'/societe/list.php?type=f">'.$langs->trans("Suppliers").'</a></td><td class="right">'.round($third['supplier']).'</td>';
196 $statstring2 .= "</tr>";
197 }
198 $thirdpartygraph .= $statstring;
199 $thirdpartygraph .= $statstring2;
200}
201$thirdpartygraph .= '<tr class="liste_total"><td>'.$langs->trans("UniqueThirdParties").'</td><td class="right">';
202$thirdpartygraph .= $total;
203$thirdpartygraph .= '</td></tr>';
204$thirdpartygraph .= '</table>';
205$thirdpartygraph .= '</div>';
206
207$thirdpartycateggraph = '';
208if (isModEnabled('category') && getDolGlobalString('CATEGORY_GRAPHSTATS_ON_THIRDPARTIES')) {
209 require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
210
211 $thirdpartycateggraph = '<div class="div-table-responsive-no-min">';
212 $thirdpartycateggraph .= '<table class="noborder nohover centpercent">';
213 $thirdpartycateggraph .= '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Categories").'</th></tr>';
214 $thirdpartycateggraph .= '<tr><td class="center" colspan="2">';
215 $sql = "SELECT c.label, count(*) as nb";
216 $sql .= " FROM ".MAIN_DB_PREFIX."categorie_societe as cs";
217 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie as c ON cs.fk_categorie = c.rowid";
218 $sql .= " WHERE c.type = 2";
219 if (!is_numeric(getDolGlobalString('CATEGORY_GRAPHSTATS_ON_THIRDPARTIES'))) {
220 $sql .= " AND c.label like '".$db->escape(getDolGlobalString('CATEGORY_GRAPHSTATS_ON_THIRDPARTIES'))."'";
221 }
222 $sql .= " AND c.entity IN (".getEntity('category').")";
223 $sql .= " GROUP BY c.label";
224 $total = 0;
225 $result = $db->query($sql);
226 if ($result) {
227 $num = $db->num_rows($result);
228 $i = 0;
229 if (!empty($conf->use_javascript_ajax)) {
230 $dataseries = array();
231 $rest = 0;
232 $nbmax = 10;
233
234 while ($i < $num) {
235 $obj = $db->fetch_object($result);
236 if ($i < $nbmax) {
237 $dataseries[] = array($obj->label, round($obj->nb));
238 } else {
239 $rest += $obj->nb;
240 }
241 $total += $obj->nb;
242 $i++;
243 }
244 if ($i > $nbmax) {
245 $dataseries[] = array($langs->trans("Other"), round($rest));
246 }
247 include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
248 $dolgraph = new DolGraph();
249 $dolgraph->SetData($dataseries);
250 $dolgraph->setShowLegend(2);
251 $dolgraph->setShowPercent(1);
252 $dolgraph->SetType(array('pie'));
253 $dolgraph->setHeight('200');
254 $dolgraph->draw('idgraphcateg');
255 $thirdpartycateggraph .= $dolgraph->show();
256 } else {
257 while ($i < $num) {
258 $obj = $db->fetch_object($result);
259
260 $thirdpartycateggraph .= '<tr class="oddeven"><td>'.dolPrintHTML($obj->label).'</td><td>'.$obj->nb.'</td></tr>';
261 $total += $obj->nb;
262 $i++;
263 }
264 }
265 }
266 $thirdpartycateggraph .= '</td></tr>';
267 $thirdpartycateggraph .= '<tr class="liste_total"><td>'.$langs->trans("Total").'</td><td class="right">';
268 $thirdpartycateggraph .= $total;
269 $thirdpartycateggraph .= '</td></tr>';
270 $thirdpartycateggraph .= '</table>';
271 $thirdpartycateggraph .= '</div>';
272} else {
273 $thirdpartycateggraph = '';
274}
275
276
277/*
278 * Latest modified third parties
279 */
280
281$sql = "SELECT s.rowid, s.nom as name, s.email, s.client, s.fournisseur";
282$sql .= ", s.code_client";
283$sql .= ", s.code_fournisseur";
284if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) {
285 $sql .= ", spe.accountancy_code_supplier as code_compta_fournisseur";
286 $sql .= ", spe.accountancy_code_customer as code_compta";
287} else {
288 $sql .= ", s.code_compta_fournisseur";
289 $sql .= ", s.code_compta";
290}
291$sql .= ", s.logo";
292$sql .= ", s.entity";
293$sql .= ", s.canvas, s.tms as date_modification, s.status as status";
294$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
295if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) {
296 $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity);
297}
298// TODO Replace this
299if (!$user->hasRight('societe', 'client', 'voir')) {
300 $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
301}
302$sql .= ' WHERE s.entity IN ('.getEntity('societe').')';
303if (!$user->hasRight('societe', 'client', 'voir')) {
304 $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
305}
306if (!$user->hasRight('fournisseur', 'lire')) {
307 $sql .= " AND (s.fournisseur != 1 OR s.client != 0)";
308}
309// Add where from hooks
310$parameters = array('socid' => $socid);
311$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $thirdparty_static); // Note that $action and $object may have been modified by hook
312if (empty($reshook)) {
313 if ($socid > 0) {
314 $sql .= " AND s.rowid = ".((int) $socid);
315 }
316}
317$sql .= $hookmanager->resPrint;
318$sql .= $db->order("s.tms", "DESC");
319$sql .= $db->plimit($max, 0);
320
321//print $sql;
322$lastmodified="";
323$result = $db->query($sql);
324if ($result) {
325 $num = $db->num_rows($result);
326
327 $i = 0;
328
329 if ($num > 0) {
330 $transRecordedType = $langs->trans("LastModifiedThirdParties", $max);
331
332 $lastmodified = "\n<!-- last thirdparties modified -->\n";
333 $lastmodified .= '<div class="div-table-responsive-no-min">';
334 $lastmodified .= '<table class="noborder centpercent">';
335
336 $lastmodified .= '<tr class="liste_titre"><th colspan="2">';
337 //$lastmodified .= img_picto('', 'company', 'class="pictofixedwidth"');
338 $lastmodified .= '<span class="valignmiddle">'.$transRecordedType.'</span>';
339 $lastmodified .= '<a class="marginleftonlyshort" href="'.DOL_URL_ROOT.'/societe/list.php?sortfield=s.tms&sortorder=DESC" title="'.$langs->trans("FullList").'">';
340 $lastmodified .= '<span class="badge marginleftonlyshort">...</span>';
341 $lastmodified .= '</a>';
342 $lastmodified .= '</th>';
343 $lastmodified .= '<th>&nbsp;</th>';
344 $lastmodified .= '<th class="right">';
345 $lastmodified .= '</th>';
346 $lastmodified .= '</tr>'."\n";
347
348 while ($i < $num) {
349 $objp = $db->fetch_object($result);
350
351 $thirdparty_static->id = $objp->rowid;
352 $thirdparty_static->name = $objp->name;
353 $thirdparty_static->client = $objp->client;
354 $thirdparty_static->fournisseur = $objp->fournisseur;
355 $thirdparty_static->logo = $objp->logo;
356 $thirdparty_static->date_modification = $db->jdate($objp->date_modification);
357 $thirdparty_static->status = $objp->status;
358 $thirdparty_static->code_client = $objp->code_client;
359 $thirdparty_static->code_fournisseur = $objp->code_fournisseur;
360 $thirdparty_static->canvas = $objp->canvas;
361 $thirdparty_static->email = $objp->email;
362 $thirdparty_static->entity = $objp->entity;
363 $thirdparty_static->code_compta_fournisseur = $objp->code_compta_fournisseur;
364 $thirdparty_static->code_compta_client = $objp->code_compta;
365
366 $lastmodified .= '<tr class="oddeven">';
367 // Name
368 $lastmodified .= '<td class="nowrap tdoverflowmax200">';
369 $lastmodified .= $thirdparty_static->getNomUrl(1);
370 $lastmodified .= "</td>\n";
371 // Type
372 $lastmodified .= '<td class="center">';
373 $lastmodified .= $thirdparty_static->getTypeUrl();
374 $lastmodified .= '</td>';
375 // Last modified date
376 $lastmodified .= '<td class="right tddate" title="'.dol_escape_htmltag($langs->trans("DateModification").' '.dol_print_date($thirdparty_static->date_modification, 'dayhour', 'tzuserrel')).'">';
377 $lastmodified .= dol_print_date($thirdparty_static->date_modification, 'day', 'tzuserrel');
378 $lastmodified .= "</td>";
379 $lastmodified .= '<td class="right nowrap">';
380 $lastmodified .= $thirdparty_static->getLibStatut(3);
381 $lastmodified .= "</td>";
382 $lastmodified .= "</tr>\n";
383 $i++;
384 }
385
386 $db->free($result);
387
388 $lastmodified .= "</table>\n";
389 $lastmodified .= '</div>';
390 $lastmodified .= "<!-- End last thirdparties modified -->\n";
391 }
392} else {
393 dol_print_error($db);
394}
395
396
397
398/*
399 * Latest modified contacts
400 */
401$sql = "SELECT s.rowid, s.nom as name, s.email, s.client, s.fournisseur";
402$sql .= ", s.code_client";
403$sql .= ", s.code_fournisseur";
404if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) {
405 $sql .= ", spe.accountancy_code_supplier as code_compta_fournisseur";
406 $sql .= ", spe.accountancy_code_customer as code_compta";
407} else {
408 $sql .= ", s.code_compta_fournisseur";
409 $sql .= ", s.code_compta";
410}
411$sql .= ", s.logo";
412$sql .= ", s.entity";
413$sql .= ", s.canvas";
414$sql .= ", s.tms as date_modification, s.status as status";
415$sql .= ", sp.rowid as cid, sp.canvas as ccanvas, sp.email as cemail, sp.firstname, sp.lastname";
416$sql .= ", sp.address as caddress, sp.phone as cphone";
417$sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."socpeople as sp";
418if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) {
419 $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity);
420}
421// TODO Replace this
422if (!$user->hasRight('societe', 'client', 'voir')) {
423 $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
424}
425$sql .= " WHERE s.entity IN (".getEntity('societe').") AND sp.fk_soc = s.rowid";
426$sql .= " AND ((sp.fk_user_creat = ".((int) $user->id)." AND sp.priv = 1) OR sp.priv = 0)"; // check if this is a private contact
427if (!$user->hasRight('societe', 'client', 'voir')) {
428 $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
429}
430if (!$user->hasRight('fournisseur', 'lire')) {
431 $sql .= " AND (s.fournisseur != 1 OR s.client != 0)";
432}
433// Add where from hooks
434$parameters = array('socid' => $socid);
435$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $thirdparty_static); // Note that $action and $object may have been modified by hook
436if (empty($reshook)) {
437 if ($socid > 0) {
438 $sql .= " AND s.rowid = ".((int) $socid);
439 }
440}
441$sql .= $hookmanager->resPrint;
442$sql .= $db->order("s.tms", "DESC");
443$sql .= $db->plimit($max, 0);
444
445//print $sql;
446$lastmodifiedcontact = '';
447$result = $db->query($sql);
448if ($result) {
449 $num = $db->num_rows($result);
450
451 $i = 0;
452
453 if ($num > 0) {
454 $transRecordedType = $langs->trans("LastModifiedContacts", $max);
455
456 $lastmodifiedcontact = "\n<!-- last contacts modified -->\n";
457 $lastmodifiedcontact .= '<div class="div-table-responsive-no-min">';
458 $lastmodifiedcontact .= '<table class="noborder centpercent">';
459
460 $lastmodifiedcontact .= '<tr class="liste_titre"><th colspan="2">';
461 //$lastmodifiedcontact .= img_picto('', 'contact', 'class="pictofixedwidth"');
462 $lastmodifiedcontact .= '<span class="valignmiddle">'.$transRecordedType.'</div>';
463 $lastmodifiedcontact .= '<a class="marginleftonlyshort" href="'.DOL_URL_ROOT.'/contact/list.php?sortfield=p.tms&sortorder=DESC" title="'.$langs->trans("FullList").'">';
464 //$lastmodifiedcontact .= img_picto($langs->trans("FullList"), 'contact');
465 $lastmodifiedcontact .= '<span class="badge marginleftonlyshort">...</span>';
466 $lastmodifiedcontact .= '</th>';
467 $lastmodifiedcontact .= '<th>&nbsp;</th>';
468 $lastmodifiedcontact .= '<th class="right">';
469 //$lastmodifiedcontact .= '<a href="'.DOL_URL_ROOT.'/contact/list.php?sortfield=s.tms&sortorder=DESC">'.img_picto($langs->trans("FullList"), 'contact');
470 $lastmodifiedcontact .= '</th>';
471 $lastmodifiedcontact .= '</tr>'."\n";
472
473 while ($i < $num) {
474 $objp = $db->fetch_object($result);
475
476 $thirdparty_static->id = $objp->rowid;
477 $thirdparty_static->name = $objp->name;
478 $thirdparty_static->client = $objp->client;
479 $thirdparty_static->fournisseur = $objp->fournisseur;
480 $thirdparty_static->logo = $objp->logo;
481 $thirdparty_static->date_modification = $db->jdate($objp->date_modification);
482 $thirdparty_static->status = $objp->status;
483 $thirdparty_static->code_client = $objp->code_client;
484 $thirdparty_static->code_fournisseur = $objp->code_fournisseur;
485 $thirdparty_static->canvas = $objp->canvas;
486 $thirdparty_static->email = $objp->email;
487 $thirdparty_static->entity = $objp->entity;
488 $thirdparty_static->code_compta_fournisseur = $objp->code_compta_fournisseur;
489 $thirdparty_static->code_compta_client = $objp->code_compta;
490
491 $contact_static->id = $objp->cid;
492 $contact_static->firstname = $objp->firstname;
493 $contact_static->lastname = $objp->lastname;
494 $contact_static->email = $objp->cemail;
495 $contact_static->socid = $objp->rowid;
496 $contact_static->canvas = $objp->ccanvas;
497 $contact_static->phone_pro = $objp->cphone;
498 $contact_static->address = $objp->caddress;
499
500 $lastmodifiedcontact .= '<tr class="oddeven">';
501 // Contact
502 $lastmodifiedcontact .= '<td>';
503 $lastmodifiedcontact .= $contact_static->getNomUrl(1);
504 $lastmodifiedcontact .= '</td>';
505 // Third party
506 $lastmodifiedcontact .= '<td class="nowrap tdoverflowmax200">';
507 $lastmodifiedcontact .= $thirdparty_static->getNomUrl(1);
508 $lastmodifiedcontact .= "</td>\n";
509 // Last modified date
510 $lastmodifiedcontact .= '<td class="right tddate" title="'.dol_escape_htmltag($langs->trans("DateModification").' '.dol_print_date($thirdparty_static->date_modification, 'dayhour', 'tzuserrel')).'">';
511 $lastmodifiedcontact .= dol_print_date($thirdparty_static->date_modification, 'day', 'tzuserrel');
512 $lastmodifiedcontact .= "</td>";
513 $lastmodifiedcontact .= '<td class="right nowrap">';
514 $lastmodifiedcontact .= $thirdparty_static->getLibStatut(3);
515 $lastmodifiedcontact .= "</td>";
516 $lastmodifiedcontact .= "</tr>\n";
517 $i++;
518 }
519
520 $db->free($result);
521
522 $lastmodifiedcontact .= "</table>\n";
523 $lastmodifiedcontact .= '</div>';
524 $lastmodifiedcontact .= "<!-- End last contacts modified -->\n";
525 }
526} else {
527 dol_print_error($db);
528}
529
530
531// boxes
532print '<div class="clearboth"></div>';
533print '<div class="fichecenter fichecenterbis">';
534
535$boxlist = '<div class="twocolumns">';
536
537$boxlist .= '<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
538$boxlist .= $thirdpartygraph;
539$boxlist .= '<br>';
540$boxlist .= $thirdpartycateggraph;
541$boxlist .= '<br>';
542$boxlist .= $resultboxes['boxlista'];
543$boxlist .= '</div>'."\n";
544
545$boxlist .= '<div class="secondcolumn fichehalfright boxhalfright" id="boxhalfright">';
546$boxlist .= $lastmodified;
547$boxlist .= '<br>';
548$boxlist .= $lastmodifiedcontact;
549$boxlist .= '<br>';
550$boxlist .= $resultboxes['boxlistb'];
551$boxlist .= '</div>'."\n";
552
553$boxlist .= '</div>';
554
555print $boxlist;
556
557print '</div>';
558
559$parameters = array('user' => $user);
560$reshook = $hookmanager->executeHooks('dashboardThirdparties', $parameters, $thirdparty_static); // Note that $action and $object may have been modified by hook
561
562// End of page
563llxFooter();
564$db->close();
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:70
Class to manage contact/addresses.
Class to build graphs.
Class to manage generation of HTML components Only common components must be here.
static getBoxesArea($user, $areacode)
Get array with HTML tabs with widgets/boxes of a particular area including personalized choices of us...
Class to manage hooks.
static saveboxorder($dbs, $zone, $boxorder, $userid=0)
Save order of boxes for area and user.
Class to manage third parties objects (customers, suppliers, prospects...)
llxFooter()
Footer empty.
Definition document.php:107
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.