27 require
'../main.inc.php';
28 require_once DOL_DOCUMENT_ROOT.
'/projet/class/project.class.php';
29 require_once DOL_DOCUMENT_ROOT.
'/projet/class/task.class.php';
30 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
31 require_once DOL_DOCUMENT_ROOT.
'/core/lib/project.lib.php';
32 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
37 $hookmanager->initHooks(array(
'projectsindex'));
40 $langs->loadLangs(array(
'projects',
'companies'));
42 $action =
GETPOST(
'action',
'aZ09');
43 $search_project_user =
GETPOST(
'search_project_user',
'int');
44 $mine =
GETPOST(
'mode',
'aZ09') ==
'mine' ? 1 : 0;
45 if ($mine == 0 && $search_project_user ===
'') {
46 $search_project_user = (empty($user->conf->MAIN_SEARCH_PROJECT_USER_PROJECTSINDEX) ?
'' : $user->conf->MAIN_SEARCH_PROJECT_USER_PROJECTSINDEX);
48 if ($search_project_user == $user->id) {
55 if (!$user->rights->projet->lire) {
59 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
60 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
62 $max = $conf->global->MAIN_SIZE_SHORTLIST_LIMIT;
69 $parameters = array();
70 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
74 if (empty($reshook)) {
75 if ($action ==
'refresh_search_project_user') {
76 $search_project_user =
GETPOST(
'search_project_user',
'int');
77 $tabparam = array(
"MAIN_SEARCH_PROJECT_USER_PROJECTSINDEX" => $search_project_user);
79 include_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
89 $companystatic =
new Societe($db);
90 $projectstatic =
new Project($db);
94 $projectset = ($mine ? $mine : (empty($user->rights->projet->all->lire) ? 0 : 2));
95 $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, $projectset, 1);
99 $title = $langs->trans(
'ProjectsArea');
101 $help_url =
'EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos|DE:Modul_Projekte';
110 $titleall = $langs->trans(
"AllAllowedProjects");
111 if (!empty($user->rights->projet->all->lire) && !$socid) {
112 $titleall = $langs->trans(
"AllProjects");
114 $titleall = $langs->trans(
"AllAllowedProjects").
'<br><br>';
118 $morehtml .=
'<form name="projectform" method="POST">';
119 $morehtml .=
'<input type="hidden" name="token" value="'.newToken().
'">';
120 $morehtml .=
'<input type="hidden" name="action" value="refresh_search_project_user">';
121 $morehtml .=
'<SELECT name="search_project_user">';
122 $morehtml .=
'<option name="all" value="0"'.($mine ?
'' :
' selected').
'>'.$titleall.
'</option>';
123 $morehtml .=
'<option name="mine" value="'.$user->id.
'"'.(($search_project_user == $user->id) ?
' selected' :
'').
'>'.$langs->trans(
"ProjectsImContactFor").
'</option>';
124 $morehtml .=
'</SELECT>';
125 $morehtml .=
'<input type="submit" class="button smallpaddingimp" name="refresh" value="'.$langs->trans(
"Refresh").
'">';
126 $morehtml .=
'</form>';
129 $tooltiphelp = $langs->trans(
"MyProjectsDesc");
131 if (!empty($user->rights->projet->all->lire) && !$socid) {
132 $tooltiphelp = $langs->trans(
"ProjectsDesc");
134 $tooltiphelp = $langs->trans(
"ProjectsPublicDesc");
138 print_barre_liste(
$form->textwithpicto($title, $tooltiphelp), 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', 0, -1,
'project', 0, $morehtml);
142 include DOL_DOCUMENT_ROOT.
'/theme/'.$conf->theme.
'/theme_vars.inc.php';
143 $listofoppstatus = array(); $listofopplabel = array(); $listofoppcode = array(); $colorseries = array();
144 $sql =
"SELECT cls.rowid, cls.code, cls.percent, cls.label";
145 $sql .=
" FROM ".MAIN_DB_PREFIX.
"c_lead_status as cls";
146 $sql .=
" WHERE active=1";
147 $resql = $db->query($sql);
149 $num = $db->num_rows(
$resql);
153 $objp = $db->fetch_object(
$resql);
154 $listofoppstatus[$objp->rowid] = $objp->percent;
155 $listofopplabel[$objp->rowid] = $objp->label;
156 $listofoppcode[$objp->rowid] = $objp->code;
157 switch ($objp->code) {
159 $colorseries[$objp->rowid] =
"-".$badgeStatus0;
162 $colorseries[$objp->rowid] =
"-".$badgeStatus1;
165 $colorseries[$objp->rowid] = $badgeStatus1;
168 $colorseries[$objp->rowid] = $badgeStatus4;
171 $colorseries[$objp->rowid] = $badgeStatus9;
174 $colorseries[$objp->rowid] = $badgeStatus6;
177 $colorseries[$objp->rowid] = $badgeStatus2;
188 print
'<div class="fichecenter"><div class="fichethirdleft">';
193 include DOL_DOCUMENT_ROOT.
'/projet/graph_opportunities.inc.php';
197 print_projecttasks_array($db,
$form, $socid, $projectsListId, 0, 0, $listofoppstatus, array(
'projectlabel',
'plannedworkload',
'declaredprogress',
'prospectionstatus',
'projectstatus'));
200 print
'</div><div class="fichetwothirdright">';
203 $sql =
"SELECT p.rowid, p.ref, p.title, p.dateo, p.datee, p.fk_statut as status, p.tms as datem";
204 $sql .=
", s.rowid as socid, s.nom as name, s.name_alias";
205 $sql .=
", s.code_client, s.code_compta, s.client";
206 $sql .=
", s.code_fournisseur, s.code_compta_fournisseur, s.fournisseur";
207 $sql .=
", s.logo, s.email, s.entity";
208 $sql .=
", s.canvas, s.status as thirdpartystatus";
209 $sql .=
" FROM ".MAIN_DB_PREFIX.
"projet as p";
210 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s on p.fk_soc = s.rowid";
211 $sql .=
" WHERE p.entity IN (".getEntity(
'project').
")";
212 if ($mine || empty($user->rights->projet->all->lire)) {
213 $sql .=
" AND p.rowid IN (".$db->sanitize($projectsListId).
")";
216 $sql .=
" AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".((int) $socid).
")";
218 $sql .=
" ORDER BY p.tms DESC";
219 $sql .= $db->plimit($max, 0);
221 $resql = $db->query($sql);
223 print
'<div class="div-table-responsive-no-min">';
224 print
'<table class="noborder centpercent">';
225 print
'<tr class="liste_titre">';
226 print
'<th colspan="5">'.$langs->trans(
"LatestModifiedProjects", $max).
'</th>';
229 $num = $db->num_rows(
$resql);
234 $obj = $db->fetch_object(
$resql);
236 print
'<tr class="oddeven">';
237 print
'<td class="nowrap">';
239 $projectstatic->id = $obj->rowid;
240 $projectstatic->ref = $obj->ref;
241 $projectstatic->title = $obj->title;
242 $projectstatic->thirdparty_name = $obj->name;
243 $projectstatic->status = $obj->status;
245 $companystatic->id = $obj->socid;
246 $companystatic->name = $obj->name;
249 $companystatic->code_compta = $obj->code_compta;
250 $companystatic->client = $obj->client;
252 $companystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
253 $companystatic->fournisseur = $obj->fournisseur;
254 $companystatic->logo = $obj->logo;
255 $companystatic->email = $obj->email;
256 $companystatic->entity = $obj->entity;
257 $companystatic->canvas = $obj->canvas;
258 $companystatic->status = $obj->thirdpartystatus;
260 print
'<table class="nobordernopadding"><tr class="nocellnopadd">';
261 print
'<td width="96" class="nobordernopadding nowrap">';
262 print $projectstatic->getNomUrl(1);
265 print
'<td width="16" class="nobordernopadding nowrap">';
269 print
'<td width="16" class="right nobordernopadding hideonsmartphone">';
272 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$obj->rowid;
273 print $formfile->getDocumentsLink($projectstatic->element, $filename, $filedir);
274 print
'</td></tr></table>';
279 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->title).
'">';
280 print $projectstatic->title;
284 print
'<td class="nowrap">';
285 if ($companystatic->id > 0) {
286 print $companystatic->getNomUrl(1,
'company', 16);
291 $datem = $db->jdate($obj->datem);
292 print
'<td class="center" title="'.dol_escape_htmltag($langs->trans(
"DateModification").
': '.
dol_print_date($datem,
'dayhour',
'tzuserrel')).
'">';
297 print
'<td class="right">'.$projectstatic->LibStatut($obj->status, 3).
'</td>';
302 print
'<tr><td colspan="4"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
304 print
"</table></div>";
310 $companystatic =
new Societe($db);
313 $sql =
"SELECT COUNT(p.rowid) as nb, SUM(p.opp_amount)";
314 $sql .=
", s.rowid as socid, s.nom as name, s.name_alias";
315 $sql .=
", s.code_client, s.code_compta, s.client";
316 $sql .=
", s.code_fournisseur, s.code_compta_fournisseur, s.fournisseur";
317 $sql .=
", s.logo, s.email, s.entity";
318 $sql .=
", s.canvas, s.status";
319 $sql .=
" FROM ".MAIN_DB_PREFIX.
"projet as p";
320 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"societe as s on p.fk_soc = s.rowid";
321 $sql .=
" WHERE p.entity IN (".getEntity(
'project').
")";
322 $sql .=
" AND p.fk_statut = 1";
323 if ($mine || empty($user->rights->projet->all->lire)) {
324 $sql .=
" AND p.rowid IN (".$db->sanitize($projectsListId).
")";
327 $sql .=
" AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".((int) $socid).
")";
329 $sql .=
" GROUP BY s.rowid, s.nom, s.name_alias, s.code_client, s.code_compta, s.client, s.code_fournisseur, s.code_compta_fournisseur, s.fournisseur, s.logo, s.email, s.entity, s.canvas, s.status";
330 $sql .= $db->order($sortfield, $sortorder);
333 $resql = $db->query($sql);
335 $num = $db->num_rows(
$resql);
343 print
'<div class="div-table-responsive-no-min">';
344 print
'<table class="noborder centpercent">';
345 print
'<tr class="liste_titre">';
346 print_liste_field_titre(
"OpenedProjectsByThirdparties", $_SERVER[
"PHP_SELF"],
"",
"",
"",
'', $sortfield, $sortorder);
347 print_liste_field_titre(
"NbOfProjects", $_SERVER[
"PHP_SELF"],
"nb",
"",
"",
'', $sortfield, $sortorder,
'right ');
352 $obj = $db->fetch_object(
$resql);
355 $othernb += $obj->nb;
360 print
'<tr class="oddeven">';
361 print
'<td class="nowraponall tdoverflowmax100">';
362 if ($obj->socid > 0) {
363 $companystatic->id = $obj->socid;
364 $companystatic->name = $obj->name;
365 $companystatic->name_alias = $obj->name_alias;
366 $companystatic->code_client = $obj->code_client;
367 $companystatic->code_compta = $obj->code_compta;
368 $companystatic->client = $obj->client;
369 $companystatic->code_fournisseur = $obj->code_fournisseur;
370 $companystatic->code_compta_fournisseur = $obj->code_compta_fournisseur;
371 $companystatic->fournisseur = $obj->fournisseur;
372 $companystatic->logo = $obj->logo;
373 $companystatic->email = $obj->email;
374 $companystatic->entity = $obj->entity;
375 $companystatic->canvas = $obj->canvas;
376 $companystatic->status = $obj->status;
378 print $companystatic->getNomUrl(1);
380 print $langs->trans(
"OthersNotLinkedToThirdParty");
383 print
'<td class="right">';
385 print
'<a href="'.DOL_URL_ROOT.
'/projet/list.php?socid='.$obj->socid.
'&search_status=1">'.$obj->nb.
'</a>';
387 print
'<a href="'.DOL_URL_ROOT.
'/projet/list.php?search_societe='.urlencode(
'^$').
'&search_status=1">'.$obj->nb.
'</a>';
395 print
'<tr class="oddeven">';
396 print
'<td class="nowrap">';
397 print
'<span class="opacitymedium">...</span>';
399 print
'<td class="nowrap right">';
415 if (empty($conf->global->PROJECT_HIDE_PROJECT_LIST_ON_PROJECT_AREA)) {
424 print
'</div></div>';
426 $parameters = array(
'user' => $user);
427 $reshook = $hookmanager->executeHooks(
'dashboardProjects', $parameters, $projectstatic);
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
if($cancel &&!$id) if($action== 'add'&&!$cancel) if($action== 'delete') if($id) $form
Actions.
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOCSRFCHECK')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks=0, $status=-1, $listofoppstatus=array(), $hiddenfields=array())
Return HTML table with list of projects and number of opened tasks.
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save"&&empty($cancel)) $help_url
View.
setEventMessages($mesg, $mesgs, $style= 'mesgs', $messagekey= '')
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options= '', $sortfield= '', $sortorder= '', $morehtmlcenter= '', $num=-1, $totalnboflines= '', $picto= 'generic', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow= '')
Print a title with navigation controls for pagination.
Class to manage third parties objects (customers, suppliers, prospects...)
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
Class to manage projects.
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
dol_sanitizeFileName($str, $newstr= '_', $unaccent=1)
Clean a string to use it as a file name.
dol_set_user_param($db, $conf, &$user, $tab)
Save personnal parameter.
if(isModEnabled('facture')&&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur')&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)&&$user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice')&&$user->rights->supplier_invoice->lire)) if(isModEnabled('don')&&!empty($user->rights->don->lire)) if(isModEnabled('tax')&&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture')&&isModEnabled('commande')&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
dol_print_date($time, $format= '', $tzoutput= 'auto', $outputlangs= '', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...