Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dolibarr
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Software_Artifact_Infrastructure_Repository
dolibarr
Commits
1be3c86b
Commit
1be3c86b
authored
8 years ago
by
Laurent Destailleur
Browse files
Options
Downloads
Patches
Plain Diff
NEW Use new archi to select field into list of time spent
parent
124df446
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
htdocs/projet/tasks/time.php
+270
-74
270 additions, 74 deletions
htdocs/projet/tasks/time.php
with
270 additions
and
74 deletions
htdocs/projet/tasks/time.php
+
270
−
74
View file @
1be3c86b
<?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2006-201
5
Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006-201
6
Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
*
...
...
@@ -40,11 +40,31 @@ $confirm=GETPOST('confirm','alpha');
$withproject
=
GETPOST
(
'withproject'
,
'int'
);
$project_ref
=
GETPOST
(
'project_ref'
,
'alpha'
);
$search_dateday
=
GETPOST
(
'search_dateday'
);
$search_datemonth
=
GETPOST
(
'search_datemonth'
);
$search_dateyear
=
GETPOST
(
'search_dateyear'
);
$search_datehour
=
''
;
$search_datewithhour
=
''
;
$search_note
=
GETPOST
(
'search_note'
,
'alpha'
);
$search_duration
=
GETPOST
(
'search_duration'
,
'int'
);
$search_value
=
GETPOST
(
'search_value'
,
'int'
);
// Security check
$socid
=
0
;
if
(
$user
->
societe_id
>
0
)
$socid
=
$user
->
societe_id
;
if
(
!
$user
->
rights
->
projet
->
lire
)
accessforbidden
();
$limit
=
GETPOST
(
"limit"
)
?
GETPOST
(
"limit"
,
"int"
)
:
$conf
->
liste_limit
;
$sortfield
=
GETPOST
(
"sortfield"
,
'alpha'
);
$sortorder
=
GETPOST
(
"sortorder"
,
'alpha'
);
$page
=
GETPOST
(
"page"
,
'int'
);
if
(
$page
==
-
1
)
{
$page
=
0
;
}
$offset
=
$limit
*
$page
;
$pageprev
=
$page
-
1
;
$pagenext
=
$page
+
1
;
if
(
!
$sortfield
)
$sortfield
=
't.task_date,t.task_datehour,t.rowid'
;
if
(
!
$sortorder
)
$sortorder
=
'DESC'
;
$object
=
new
Task
(
$db
);
$projectstatic
=
new
Project
(
$db
);
...
...
@@ -53,6 +73,28 @@ $projectstatic = new Project($db);
* Actions
*/
$parameters
=
array
(
'socid'
=>
$socid
,
'projectid'
=>
$projectid
);
$reshook
=
$hookmanager
->
executeHooks
(
'doActions'
,
$parameters
,
$object
,
$action
);
// Note that $action and $object may have been modified by some hooks
if
(
$reshook
<
0
)
setEventMessages
(
$hookmanager
->
error
,
$hookmanager
->
errors
,
'errors'
);
include
DOL_DOCUMENT_ROOT
.
'/core/actions_changeselectedfields.inc.php'
;
// Purge search criteria
if
(
GETPOST
(
"button_removefilter_x"
)
||
GETPOST
(
"button_removefilter.x"
)
||
GETPOST
(
"button_removefilter"
))
// All test are required to be compatible with all browsers
{
$search_date
=
''
;
$search_datehour
=
''
;
$search_datewithhour
=
''
;
$search_note
=
''
;
$search_duration
=
''
;
$search_value
=
''
;
$search_date_creation
=
''
;
$search_date_update
=
''
;
$toselect
=
''
;
$search_array_options
=
array
();
$action
=
''
;
}
if
(
$action
==
'addtimespent'
&&
$user
->
rights
->
projet
->
lire
)
{
$error
=
0
;
...
...
@@ -202,7 +244,6 @@ if (GETPOST('projectid'))
}
/*
* View
...
...
@@ -247,7 +288,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
print
'<table class="border" width="100%">'
;
$linkback
=
'<a href="'
.
DOL_URL_ROOT
.
'/projet/list.php">'
.
$langs
->
trans
(
"BackToList"
)
.
'</a>'
;
$linkback
=
'<a href="'
.
DOL_URL_ROOT
.
'/projet/list.php">'
.
$langs
->
trans
(
"BackToList"
)
.
'</a>'
;
// Ref
print
'<tr><td class="titlefield">'
;
...
...
@@ -492,6 +533,29 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
if
(
$projectstatic
->
id
>
0
)
{
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array
$hookmanager
->
initHooks
(
array
(
'tasktimelist'
));
$extrafields
=
new
ExtraFields
(
$db
);
// Definition of fields for list
$arrayfields
=
array
(
't.task_date'
=>
array
(
'label'
=>
$langs
->
trans
(
"Date"
),
'checked'
=>
1
),
'author'
=>
array
(
'label'
=>
$langs
->
trans
(
"By"
),
'checked'
=>
1
),
't.note'
=>
array
(
'label'
=>
$langs
->
trans
(
"Note"
),
'checked'
=>
1
),
't.task_duration'
=>
array
(
'label'
=>
$langs
->
trans
(
"Duration"
),
'checked'
=>
1
),
'value'
=>
array
(
'label'
=>
$langs
->
trans
(
"Value"
),
'checked'
=>
1
,
'enabled'
=>
$conf
->
salaries
->
enabled
),
);
// Extra fields
if
(
is_array
(
$extrafields
->
attribute_label
)
&&
count
(
$extrafields
->
attribute_label
))
{
foreach
(
$extrafields
->
attribute_label
as
$key
=>
$val
)
{
$arrayfields
[
"ef."
.
$key
]
=
array
(
'label'
=>
$extrafields
->
attribute_label
[
$key
],
'checked'
=>
$extrafields
->
attribute_list
[
$key
],
'position'
=>
$extrafields
->
attribute_pos
[
$key
],
'enabled'
=>
$extrafields
->
attribute_perms
[
$key
]);
}
}
/*
* List of time spent
*/
...
...
@@ -503,8 +567,10 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
$sql
.
=
" , "
.
MAIN_DB_PREFIX
.
"user as u"
;
$sql
.
=
" WHERE t.fk_user = u.rowid"
;
if
(
empty
(
$projectidforalltimes
))
$sql
.
=
" AND t.fk_task ="
.
$object
->
id
;
$sql
.
=
" ORDER BY t.task_date DESC, t.task_datehour DESC, t.rowid DESC"
;
if
(
$search_ref
)
$sql
.
=
natural_search
(
'c.ref'
,
$search_ref
);
$sql
.
=
$db
->
order
(
$sortfield
,
$sortorder
);
$var
=
true
;
$resql
=
$db
->
query
(
$sql
);
if
(
$resql
)
...
...
@@ -534,25 +600,138 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
dol_print_error
(
$db
);
}
$arrayofselected
=
is_array
(
$toselect
)
?
$toselect
:
array
();
$params
=
''
;
if
(
!
empty
(
$contextpage
)
&&
$contextpage
!=
$_SERVER
[
"PHP_SELF"
])
$param
.
=
'&contextpage='
.
$contextpage
;
if
(
$limit
>
0
&&
$limit
!=
$conf
->
liste_limit
)
$param
.
=
'&limit='
.
$limit
;
if
(
$search_note
!=
''
)
$params
.
=
'&search_note='
.
urlencode
(
$search_note
);
if
(
$search_duration
!=
''
)
$params
.
=
'&search_field2='
.
urlencode
(
$search_duration
);
if
(
$optioncss
!=
''
)
$param
.
=
'&optioncss='
.
$optioncss
;
// Add $param from extra fields
/*foreach ($search_array_options as $key => $val)
{
$crit=$val;
$tmpkey=preg_replace('/search_options_/','',$key);
if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val);
}*/
if
(
$projectstatic
->
id
)
$params
.
=
'&projectid='
.
$projectstatic
->
id
;
if
(
$withproject
)
$params
.
=
'&withproject='
.
$withproject
;
$arrayofmassactions
=
array
(
//'presend'=>$langs->trans("SendByMail"),
//'builddoc'=>$langs->trans("PDFMerge"),
);
//if ($user->rights->projet->creer) $arrayofmassactions['delete']=$langs->trans("Delete");
if
(
$massaction
==
'presend'
)
$arrayofmassactions
=
array
();
$massactionbutton
=
$form
->
selectMassAction
(
''
,
$arrayofmassactions
);
print
'<form method="POST" action="'
.
$_SERVER
[
"PHP_SELF"
]
.
'?id='
.
$object
->
id
.
'">'
;
if
(
$optioncss
!=
''
)
print
'<input type="hidden" name="optioncss" value="'
.
$optioncss
.
'">'
;
print
'<input type="hidden" name="token" value="'
.
$_SESSION
[
'newtoken'
]
.
'">'
;
print
'<input type="hidden" name="action" value="updateline">'
;
print
'<input type="hidden" name="id" value="'
.
$object
->
id
.
'">'
;
print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">'
;
print
'<input type="hidden" name="action" value="list">'
;
print
'<input type="hidden" name="sortfield" value="'
.
$sortfield
.
'">'
;
print
'<input type="hidden" name="sortorder" value="'
.
$sortorder
.
'">'
;
print
'<input type="hidden" name="projectid" value="'
.
$projectstatic
->
id
.
'">'
;
print
'<input type="hidden" name="withproject" value="'
.
$withproject
.
'">'
;
print
'<table class="noborder" width="100%">'
;
print
'<tr class="liste_titre">'
;
print
'<td width="100">'
.
$langs
->
trans
(
"Date"
)
.
'</td>'
;
print
'<td>'
.
$langs
->
trans
(
"By"
)
.
'</td>'
;
print
'<td align="left">'
.
$langs
->
trans
(
"Note"
)
.
'</td>'
;
print
'<td align="right">'
.
$langs
->
trans
(
"TimeSpent"
)
.
'</td>'
;
if
(
!
empty
(
$conf
->
salaries
->
enabled
))
$moreforfilter
=
''
;
$parameters
=
array
();
$reshook
=
$hookmanager
->
executeHooks
(
'printFieldPreListTitle'
,
$parameters
);
// Note that $action and $object may have been modified by hook
if
(
empty
(
$reshook
))
$moreforfilter
.
=
$hookmanager
->
resPrint
;
else
$moreforfilter
=
$hookmanager
->
resPrint
;
if
(
!
empty
(
$moreforfilter
))
{
print
'<td align="right">'
.
$langs
->
trans
(
"Value"
)
.
'</td>'
;
print
'<div class="liste_titre liste_titre_bydiv centpercent">'
;
print
$moreforfilter
;
print
'</div>'
;
}
print
'<td> </td>'
;
$varpage
=
empty
(
$contextpage
)
?
$_SERVER
[
"PHP_SELF"
]
:
$contextpage
;
$selectedfields
=
$form
->
multiSelectArrayWithCheckbox
(
'selectedfields'
,
$arrayfields
,
$varpage
);
// This also change content of $arrayfields
print
'<table class="tagtable liste'
.
(
$moreforfilter
?
" listwithfilterbefore"
:
""
)
.
'">'
.
"
\n
"
;
print
'<tr class="liste_titre">'
;
if
(
!
empty
(
$arrayfields
[
't.task_date'
][
'checked'
]))
print_liste_field_titre
(
$arrayfields
[
't.task_date'
][
'label'
],
$_SERVER
[
'PHP_SELF'
],
't.task_date,t.task_datehour,t.rowid'
,
''
,
$params
,
''
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$arrayfields
[
't.task_datehour'
][
'checked'
]))
print_liste_field_titre
(
$arrayfields
[
't.task_datehour'
][
'label'
],
$_SERVER
[
'PHP_SELF'
],
't.task_date,t.task_datehour,t.rowid'
,
''
,
$params
,
''
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$arrayfields
[
'author'
][
'checked'
]))
print_liste_field_titre
(
$arrayfields
[
'author'
][
'label'
],
$_SERVER
[
'PHP_SELF'
],
''
,
''
,
$params
,
''
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$arrayfields
[
't.note'
][
'checked'
]))
print_liste_field_titre
(
$arrayfields
[
't.note'
][
'label'
],
$_SERVER
[
'PHP_SELF'
],
't.note'
,
''
,
$params
,
''
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$arrayfields
[
't.task_duration'
][
'checked'
]))
print_liste_field_titre
(
$arrayfields
[
't.task_duration'
][
'label'
],
$_SERVER
[
'PHP_SELF'
],
't.task_duration'
,
''
,
$params
,
'align="right"'
,
$sortfield
,
$sortorder
);
if
(
!
empty
(
$arrayfields
[
'value'
][
'checked'
]))
print_liste_field_titre
(
$arrayfields
[
'value'
][
'label'
],
$_SERVER
[
'PHP_SELF'
],
''
,
''
,
$params
,
'align="right"'
,
$sortfield
,
$sortorder
);
// Extra fields
/*
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
{
foreach($extrafields->attribute_label as $key => $val)
{
if (! empty($arrayfields["ef.".$key]['checked']))
{
$align=$extrafields->getAlignFlag($key);
print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder);
}
}
}*/
// Hook fields
$parameters
=
array
(
'arrayfields'
=>
$arrayfields
);
$reshook
=
$hookmanager
->
executeHooks
(
'printFieldListTitle'
,
$parameters
);
// Note that $action and $object may have been modified by hook
print
$hookmanager
->
resPrint
;
print_liste_field_titre
(
$selectedfields
,
$_SERVER
[
"PHP_SELF"
],
""
,
''
,
''
,
'align="right"'
,
$sortfield
,
$sortorder
,
'maxwidthsearch '
);
print
"</tr>
\n
"
;
// Fields title search
print
'<tr class="liste_titre">'
;
// LIST_OF_TD_TITLE_SEARCH
if
(
!
empty
(
$arrayfields
[
't.task_date'
][
'checked'
]))
print
'<td class="liste_titre"></td>'
;
if
(
!
empty
(
$arrayfields
[
't.task_datehour'
][
'checked'
]))
print
'<td class="liste_titre"></td>'
;
if
(
!
empty
(
$arrayfields
[
'author'
][
'checked'
]))
print
'<td class="liste_titre"></td>'
;
if
(
!
empty
(
$arrayfields
[
't.note'
][
'checked'
]))
print
'<td class="liste_titre"><input type="text" class="flat" name="search_note" value="'
.
$search_note
.
'" size="10"></td>'
;
if
(
!
empty
(
$arrayfields
[
't.task_duration'
][
'checked'
]))
print
'<td class="liste_titre right"></td>'
;
if
(
!
empty
(
$arrayfields
[
'value'
][
'checked'
]))
print
'<td class="liste_titre"></td>'
;
// Extra fields
/*
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label))
{
foreach($extrafields->attribute_label as $key => $val)
{
if (! empty($arrayfields["ef.".$key]['checked']))
{
$align=$extrafields->getAlignFlag($key);
$typeofextrafield=$extrafields->attribute_type[$key];
print '<td class="liste_titre'.($align?' '.$align:'').'">';
if (in_array($typeofextrafield, array('varchar', 'int', 'double', 'select')))
{
$crit=$val;
$tmpkey=preg_replace('/search_options_/','',$key);
$searchclass='';
if (in_array($typeofextrafield, array('varchar', 'select'))) $searchclass='searchstring';
if (in_array($typeofextrafield, array('int', 'double'))) $searchclass='searchnum';
print '<input class="flat'.($searchclass?' '.$searchclass:'').'" size="4" type="text" name="search_options_'.$tmpkey.'" value="'.dol_escape_htmltag($search_array_options['search_options_'.$tmpkey]).'">';
}
print '</td>';
}
}
}*/
// Fields from hook
$parameters
=
array
(
'arrayfields'
=>
$arrayfields
);
$reshook
=
$hookmanager
->
executeHooks
(
'printFieldListOption'
,
$parameters
);
// Note that $action and $object may have been modified by hook
print
$hookmanager
->
resPrint
;
// Action column
print
'<td class="liste_titre" align="right">'
;
$searchpitco
=
$form
->
showFilterAndCheckAddButtons
(
$massactionbutton
?
1
:
0
,
'checkforselect'
,
1
);
print
$searchpitco
;
print
'</td>'
;
print
'</tr>'
.
"
\n
"
;
$total
=
0
;
$totalvalue
=
0
;
foreach
(
$tasks
as
$task_time
)
...
...
@@ -564,76 +743,92 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
$date2
=
$db
->
jdate
(
$task_time
->
task_datehour
);
// Date
print
'<td class="nowrap">'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
if
(
!
empty
(
$arrayfields
[
't.task_date'
][
'checked'
]))
{
print
$form
->
select_date
((
$date2
?
$date2
:
$date1
),
'timeline'
,
1
,
1
,
2
,
"timespent_date"
,
1
,
0
,
1
);
}
else
{
print
dol_print_date
((
$date2
?
$date2
:
$date1
),(
$task_time
->
task_date_withhour
?
'dayhour'
:
'day'
));
print
'<td class="nowrap">'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
print
$form
->
select_date
((
$date2
?
$date2
:
$date1
),
'timeline'
,
1
,
1
,
2
,
"timespent_date"
,
1
,
0
,
1
);
}
else
{
print
dol_print_date
((
$date2
?
$date2
:
$date1
),(
$task_time
->
task_date_withhour
?
'dayhour'
:
'day'
));
}
print
'</td>'
;
}
print
'</td>'
;
// User
print
'<td>'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
$contactsoftask
=
$object
->
getListContactId
(
'internal'
);
if
(
!
in_array
(
$task_time
->
fk_user
,
$contactsoftask
))
{
$contactsoftask
[]
=
$task_time
->
fk_user
;
}
if
(
count
(
$contactsoftask
)
>
0
)
{
print
img_object
(
''
,
'user'
,
'class="hideonsmartphone"'
);
print
$form
->
select_dolusers
(
$task_time
->
fk_user
,
'userid_line'
,
0
,
''
,
0
,
''
,
$contactsoftask
);
}
else
{
print
img_error
(
$langs
->
trans
(
'FirstAddRessourceToAllocateTime'
))
.
$langs
->
trans
(
'FirstAddRessourceToAllocateTime'
);
}
}
else
{
$userstatic
->
id
=
$task_time
->
fk_user
;
$userstatic
->
lastname
=
$task_time
->
lastname
;
$userstatic
->
firstname
=
$task_time
->
firstname
;
print
$userstatic
->
getNomUrl
(
1
);
}
print
'</td>'
;
if
(
!
empty
(
$arrayfields
[
'author'
][
'checked'
]))
{
print
'<td>'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
$contactsoftask
=
$object
->
getListContactId
(
'internal'
);
if
(
!
in_array
(
$task_time
->
fk_user
,
$contactsoftask
))
{
$contactsoftask
[]
=
$task_time
->
fk_user
;
}
if
(
count
(
$contactsoftask
)
>
0
)
{
print
img_object
(
''
,
'user'
,
'class="hideonsmartphone"'
);
print
$form
->
select_dolusers
(
$task_time
->
fk_user
,
'userid_line'
,
0
,
''
,
0
,
''
,
$contactsoftask
);
}
else
{
print
img_error
(
$langs
->
trans
(
'FirstAddRessourceToAllocateTime'
))
.
$langs
->
trans
(
'FirstAddRessourceToAllocateTime'
);
}
}
else
{
$userstatic
->
id
=
$task_time
->
fk_user
;
$userstatic
->
lastname
=
$task_time
->
lastname
;
$userstatic
->
firstname
=
$task_time
->
firstname
;
print
$userstatic
->
getNomUrl
(
1
);
}
print
'</td>'
;
}
// Note
print
'<td align="left">'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
print
'<textarea name="timespent_note_line" width="95%" rows="'
.
ROWS_2
.
'">'
.
$task_time
->
note
.
'</textarea>'
;
}
else
{
print
dol_nl2br
(
$task_time
->
note
);
}
print
'</td>'
;
if
(
!
empty
(
$arrayfields
[
't.note'
][
'checked'
]))
{
print
'<td align="left">'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
print
'<textarea name="timespent_note_line" width="95%" rows="'
.
ROWS_2
.
'">'
.
$task_time
->
note
.
'</textarea>'
;
}
else
{
print
dol_nl2br
(
$task_time
->
note
);
}
print
'</td>'
;
}
// Time spent
print
'<td align="right">'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
print
'<input type="hidden" name="old_duration" value="'
.
$task_time
->
task_duration
.
'">'
;
print
$form
->
select_duration
(
'new_duration'
,
$task_time
->
task_duration
,
0
,
'text'
);
}
else
{
print
convertSecondToTime
(
$task_time
->
task_duration
,
'allhourmin'
);
}
print
'</td>'
;
if
(
!
empty
(
$arrayfields
[
't.task_duration'
][
'checked'
]))
{
print
'<td align="right">'
;
if
(
$_GET
[
'action'
]
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
print
'<input type="hidden" name="old_duration" value="'
.
$task_time
->
task_duration
.
'">'
;
print
$form
->
select_duration
(
'new_duration'
,
$task_time
->
task_duration
,
0
,
'text'
);
}
else
{
print
convertSecondToTime
(
$task_time
->
task_duration
,
'allhourmin'
);
}
print
'</td>'
;
}
// Value spent
if
(
$conf
->
salaries
->
enabled
)
{
if
(
!
empty
(
$arrayfields
[
'value'
][
'checked'
]))
{
print
'<td align="right">'
;
print
price
(
price2num
(
$task_time
->
thm
*
$task_time
->
task_duration
/
3600
),
1
,
$langs
,
1
,
-
1
,
-
1
,
$conf
->
currency
);
print
'</td>'
;
}
// Edit and delete icon
print
'<td align="center" valign="middle" width="80">'
;
// Fields from hook
$parameters
=
array
(
'arrayfields'
=>
$arrayfields
,
'obj'
=>
$obj
);
$reshook
=
$hookmanager
->
executeHooks
(
'printFieldListValue'
,
$parameters
);
// Note that $action and $object may have been modified by hook
print
$hookmanager
->
resPrint
;
// Action column
print
'<td class="right" valign="middle" width="80">'
;
if
(
$action
==
'editline'
&&
$_GET
[
'lineid'
]
==
$task_time
->
rowid
)
{
print
'<input type="hidden" name="lineid" value="'
.
$_GET
[
'lineid'
]
.
'">'
;
...
...
@@ -659,6 +854,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0)
$total
+=
$task_time
->
task_duration
;
$totalvalue
+=
price2num
(
$task_time
->
thm
*
$task_time
->
task_duration
/
3600
);
}
print
'<tr class="liste_total"><td colspan="3" class="liste_total">'
.
$langs
->
trans
(
"Total"
)
.
'</td>'
;
print
'<td align="right" class="nowrap liste_total">'
.
convertSecondToTime
(
$total
,
'allhourmin'
)
.
'</td>'
;
if
(
$conf
->
salaries
->
enabled
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment