Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
5b726635d4
@ -220,6 +220,9 @@ if ($resql) {
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
|
||||
if ($limit > 0 && $limit != $conf->liste_limit) {
|
||||
$param.='&limit='.urlencode($limit);
|
||||
}
|
||||
$param = "&id=".urlencode($id);
|
||||
|
||||
// Lines of title fields
|
||||
|
||||
@ -572,7 +572,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
||||
$numlines = count($lines);
|
||||
|
||||
// We declare counter as global because we want to edit them into recursive call
|
||||
global $total_projectlinesa_spent, $total_projectlinesa_planned, $total_projectlinesa_spent_if_planned, $total_projectlinesa_declared_if_planned, $total_projectlinesa_tobill, $total_projectlinesa_billed;
|
||||
global $total_projectlinesa_spent, $total_projectlinesa_planned, $total_projectlinesa_spent_if_planned, $total_projectlinesa_declared_if_planned, $total_projectlinesa_tobill, $total_projectlinesa_billed, $total_budget_amount;
|
||||
|
||||
if ($level == 0) {
|
||||
$total_projectlinesa_spent = 0;
|
||||
@ -581,6 +581,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
||||
$total_projectlinesa_declared_if_planned = 0;
|
||||
$total_projectlinesa_tobill = 0;
|
||||
$total_projectlinesa_billed = 0;
|
||||
$total_budget_amount = 0;
|
||||
}
|
||||
|
||||
for ($i = 0; $i < $numlines; $i++) {
|
||||
@ -651,6 +652,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
||||
$taskstatic->datee = $lines[$i]->date_end; // deprecated
|
||||
$taskstatic->planned_workload = $lines[$i]->planned_workload;
|
||||
$taskstatic->duration_effective = $lines[$i]->duration;
|
||||
$taskstatic->budget_amount = $lines[$i]->budget_amount;
|
||||
|
||||
|
||||
if ($showproject) {
|
||||
@ -850,6 +852,12 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
||||
}
|
||||
print '</td>';
|
||||
}*/
|
||||
if (count($arrayfields) > 0 && !empty($arrayfields['c.assigned']['checked'])) {
|
||||
print '<td class="center">';
|
||||
print price($lines[$i]->budget_amount, 0, $langs, 1, 0, 0, $conf->currency);
|
||||
$total_budget_amount += $lines[$i]->budget_amount;
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
// Contacts of task
|
||||
if (count($arrayfields) > 0 && !empty($arrayfields['c.assigned']['checked'])) {
|
||||
@ -921,7 +929,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
||||
}
|
||||
}
|
||||
|
||||
if (($total_projectlinesa_planned > 0 || $total_projectlinesa_spent > 0 || $total_projectlinesa_tobill > 0 || $total_projectlinesa_billed > 0)
|
||||
if (($total_projectlinesa_planned > 0 || $total_projectlinesa_spent > 0 || $total_projectlinesa_tobill > 0 || $total_projectlinesa_billed > 0 || $total_budget_amount > 0)
|
||||
&& $level <= 0) {
|
||||
print '<tr class="liste_total nodrag nodrop">';
|
||||
print '<td class="liste_total">'.$langs->trans("Total").'</td>';
|
||||
@ -1021,6 +1029,13 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
|
||||
print '</td>';
|
||||
}
|
||||
}
|
||||
|
||||
if (count($arrayfields) > 0 && !empty($arrayfields['t.budget_amount']['checked'])) {
|
||||
print '<td class="nowrap liste_total center">';
|
||||
print price($total_budget_amount, 0, $langs, 1, 0, 0, $conf->currency);
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
// Contacts of task for backward compatibility,
|
||||
if (!empty($conf->global->PROJECT_SHOW_CONTACTS_IN_LIST)) {
|
||||
print '<td></td>';
|
||||
|
||||
@ -374,3 +374,5 @@ ALTER TABLE llx_hrm_skillrank ADD CONSTRAINT llx_hrm_skillrank_fk_user_creat FOR
|
||||
-- Manage accountancy auxiliary account for thirdparties per entity
|
||||
ALTER TABLE llx_societe_perentity ADD COLUMN accountancy_code_customer varchar(24) AFTER entity; -- equivalent to code_compta in llx_societe
|
||||
ALTER TABLE llx_societe_perentity ADD COLUMN accountancy_code_supplier varchar(24) AFTER accountancy_code_customer; -- equivalent to code_compta_supplier in llx_societe
|
||||
|
||||
ALTER TABLE llx_projet_task ADD COLUMN budget_amount double(24,8) AFTER priority;
|
||||
|
||||
@ -35,6 +35,7 @@ create table llx_projet_task
|
||||
planned_workload real DEFAULT 0,
|
||||
progress integer DEFAULT 0, -- percentage increase
|
||||
priority integer DEFAULT 0, -- priority
|
||||
budget_amount double(24,8),
|
||||
fk_user_creat integer, -- user who created the task
|
||||
fk_user_modif integer, -- user who modify the task
|
||||
fk_user_valid integer, -- user who validated the task
|
||||
|
||||
@ -121,6 +121,16 @@ class Task extends CommonObject
|
||||
|
||||
public $comments = array();
|
||||
|
||||
/**
|
||||
* @var float budget_amount
|
||||
*/
|
||||
public $budget_amount;
|
||||
|
||||
/**
|
||||
* @var float project_budget_amount
|
||||
*/
|
||||
public $project_budget_amount;
|
||||
|
||||
public $oldcopy;
|
||||
|
||||
|
||||
@ -172,6 +182,7 @@ class Task extends CommonObject
|
||||
$sql .= ", datee";
|
||||
$sql .= ", planned_workload";
|
||||
$sql .= ", progress";
|
||||
$sql .= ", budget_amount";
|
||||
$sql .= ") VALUES (";
|
||||
$sql .= ((int) $conf->entity);
|
||||
$sql .= ", ".((int) $this->fk_project);
|
||||
@ -185,6 +196,7 @@ class Task extends CommonObject
|
||||
$sql .= ", ".($this->date_end ? "'".$this->db->idate($this->date_end)."'" : 'null');
|
||||
$sql .= ", ".(($this->planned_workload != '' && $this->planned_workload >= 0) ? ((int) $this->planned_workload) : 'null');
|
||||
$sql .= ", ".(($this->progress != '' && $this->progress >= 0) ? ((int) $this->progress) : 'null');
|
||||
$sql .= ", ".(($this->budget_amount != '' && $this->budget_amount >= 0) ? ((int) $this->budget_amount) : 'null');
|
||||
$sql .= ")";
|
||||
|
||||
$this->db->begin();
|
||||
@ -261,6 +273,7 @@ class Task extends CommonObject
|
||||
$sql .= " t.fk_user_valid,";
|
||||
$sql .= " t.fk_statut,";
|
||||
$sql .= " t.progress,";
|
||||
$sql .= " t.budget_amount,";
|
||||
$sql .= " t.priority,";
|
||||
$sql .= " t.note_private,";
|
||||
$sql .= " t.note_public,";
|
||||
@ -304,6 +317,7 @@ class Task extends CommonObject
|
||||
$this->fk_user_valid = $obj->fk_user_valid;
|
||||
$this->fk_statut = $obj->fk_statut;
|
||||
$this->progress = $obj->progress;
|
||||
$this->budget_amount = $obj->budget_amount;
|
||||
$this->priority = $obj->priority;
|
||||
$this->note_private = $obj->note_private;
|
||||
$this->note_public = $obj->note_public;
|
||||
@ -366,6 +380,9 @@ class Task extends CommonObject
|
||||
if (isset($this->planned_workload)) {
|
||||
$this->planned_workload = trim($this->planned_workload);
|
||||
}
|
||||
if (isset($this->budget_amount)) {
|
||||
$this->budget_amount = trim($this->budget_amount);
|
||||
}
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
@ -382,6 +399,7 @@ class Task extends CommonObject
|
||||
$sql .= " dateo=".($this->date_start != '' ? "'".$this->db->idate($this->date_start)."'" : 'null').",";
|
||||
$sql .= " datee=".($this->date_end != '' ? "'".$this->db->idate($this->date_end)."'" : 'null').",";
|
||||
$sql .= " progress=".(($this->progress != '' && $this->progress >= 0) ? $this->progress : 'null').",";
|
||||
$sql .= " budget_amount=".(($this->budget_amount != '' && $this->budget_amount >= 0) ? $this->budget_amount : 'null').",";
|
||||
$sql .= " rang=".((!empty($this->rang)) ? $this->rang : "0");
|
||||
$sql .= " WHERE rowid=".((int) $this->id);
|
||||
|
||||
@ -791,8 +809,9 @@ class Task extends CommonObject
|
||||
$sql .= " t.rowid as taskid, t.ref as taskref, t.label, t.description, t.fk_task_parent, t.duration_effective, t.progress, t.fk_statut as status,";
|
||||
$sql .= " t.dateo as date_start, t.datee as date_end, t.planned_workload, t.rang,";
|
||||
$sql .= " t.description, ";
|
||||
$sql .= " t.budget_amount, ";
|
||||
$sql .= " s.rowid as thirdparty_id, s.nom as thirdparty_name, s.email as thirdparty_email,";
|
||||
$sql .= " p.fk_opp_status, p.opp_amount, p.opp_percent, p.budget_amount";
|
||||
$sql .= " p.fk_opp_status, p.opp_amount, p.opp_percent, p.budget_amount as project_budget_amount";
|
||||
if (!empty($extrafields->attributes['projet']['label'])) {
|
||||
foreach ($extrafields->attributes['projet']['label'] as $key => $val) {
|
||||
$sql .= ($extrafields->attributes['projet']['type'][$key] != 'separate' ? ",efp.".$key." as options_".$key : '');
|
||||
@ -897,6 +916,7 @@ class Task extends CommonObject
|
||||
$sql .= " t.rowid, t.ref, t.label, t.description, t.fk_task_parent, t.duration_effective, t.progress, t.fk_statut,";
|
||||
$sql .= " t.dateo, t.datee, t.planned_workload, t.rang,";
|
||||
$sql .= " t.description, ";
|
||||
$sql .= " t.budget_amount, ";
|
||||
$sql .= " s.rowid, s.nom, s.email,";
|
||||
$sql .= " p.fk_opp_status, p.opp_amount, p.opp_percent, p.budget_amount";
|
||||
if (!empty($extrafields->attributes['projet']['label'])) {
|
||||
@ -950,6 +970,7 @@ class Task extends CommonObject
|
||||
$tasks[$i]->opp_amount = $obj->opp_amount;
|
||||
$tasks[$i]->opp_percent = $obj->opp_percent;
|
||||
$tasks[$i]->budget_amount = $obj->budget_amount;
|
||||
$tasks[$i]->project_budget_amount = $obj->project_budget_amount;
|
||||
$tasks[$i]->usage_bill_time = $obj->usage_bill_time;
|
||||
|
||||
$tasks[$i]->label = $obj->label;
|
||||
|
||||
@ -82,6 +82,7 @@ $search_planedworkload = GETPOST('search_planedworkload');
|
||||
$search_timespend = GETPOST('search_timespend');
|
||||
$search_progresscalc = GETPOST('search_progresscalc');
|
||||
$search_progressdeclare = GETPOST('search_progressdeclare');
|
||||
$search_task_budget_amount = GETPOST('search_task_budget_amount');
|
||||
|
||||
$search_date_start_startmonth = GETPOST('search_date_start_startmonth', 'int');
|
||||
$search_date_start_startyear = GETPOST('search_date_start_startyear', 'int');
|
||||
@ -142,6 +143,7 @@ $diroutputmassaction = $conf->projet->dir_output.'/tasks/temp/massgeneration/'.$
|
||||
$hookmanager->initHooks(array('projecttaskscard', 'globalcard'));
|
||||
|
||||
$progress = GETPOST('progress', 'int');
|
||||
$budget_amount = GETPOST('budget_amount', 'int');
|
||||
$label = GETPOST('label', 'alpha');
|
||||
$description = GETPOST('description', 'restricthtml');
|
||||
$planned_workloadhour = (GETPOST('planned_workloadhour', 'int') ?GETPOST('planned_workloadhour', 'int') : 0);
|
||||
@ -160,7 +162,8 @@ $arrayfields = array(
|
||||
't.progress_calculated'=>array('label'=>$langs->trans("ProgressCalculated"), 'checked'=>1, 'position'=>8),
|
||||
't.progress'=>array('label'=>$langs->trans("ProgressDeclared"), 'checked'=>1, 'position'=>9),
|
||||
't.progress_summary'=>array('label'=>$langs->trans("TaskProgressSummary"), 'checked'=>1, 'position'=>10),
|
||||
'c.assigned'=>array('label'=>$langs->trans("TaskRessourceLinks"), 'checked'=>1, 'position'=>11),
|
||||
't.budget_amount'=>array('label'=>"Budget", 'checked'=>1, 'position'=>11),
|
||||
'c.assigned'=>array('label'=>$langs->trans("TaskRessourceLinks"), 'checked'=>1, 'position'=>12),
|
||||
);
|
||||
if ($object->usage_bill_time) {
|
||||
$arrayfields['t.tobill'] = array('label'=>$langs->trans("TimeToBill"), 'checked'=>0, 'position'=>11);
|
||||
@ -204,6 +207,7 @@ if (empty($reshook)) {
|
||||
$search_timespend = '';
|
||||
$search_progresscalc = '';
|
||||
$search_progressdeclare = '';
|
||||
$search_task_budget_amount = '';
|
||||
$toselect = '';
|
||||
$search_array_options = array();
|
||||
$search_date_start_startmonth = "";
|
||||
@ -285,6 +289,10 @@ if (!empty($search_progressdeclare)) {
|
||||
$morewherefilterarray[] = natural_search('t.progress', $search_progressdeclare, 1, 1);
|
||||
}
|
||||
|
||||
if ($search_task_budget_amount) {
|
||||
$morewherefilterarray[]= natural_search('t.budget_amount', $search_task_budget_amount, 1, 1);
|
||||
}
|
||||
|
||||
$morewherefilter = '';
|
||||
if (count($morewherefilterarray) > 0) {
|
||||
$morewherefilter = ' AND '.implode(' AND ', $morewherefilterarray);
|
||||
@ -338,6 +346,7 @@ if ($action == 'createtask' && $user->rights->projet->creer) {
|
||||
$task->date_start = $date_start;
|
||||
$task->date_end = $date_end;
|
||||
$task->progress = $progress;
|
||||
$task->budget_amount = $budget_amount;
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost(null, $task);
|
||||
@ -524,6 +533,9 @@ if ($id > 0 || !empty($ref)) {
|
||||
if ($search_progressdeclare) {
|
||||
$param .= '&search_progressdeclare='.urlencode($search_progressdeclare);
|
||||
}
|
||||
if ($search_task_budget_amount) {
|
||||
$param .= '&search_task_budget_amount='.urlencode($search_task_budget_amount);
|
||||
}
|
||||
if ($optioncss != '') {
|
||||
$param .= '&optioncss='.urlencode($optioncss);
|
||||
}
|
||||
@ -757,6 +769,10 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third
|
||||
print '<textarea name="description" class="quatrevingtpercent" rows="'.ROWS_4.'">'.$description.'</textarea>';
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td>'.$langs->trans("Budget").'</td>';
|
||||
print '<td><input size="5" type="text" name="budget_amount" value="'.dol_escape_htmltag(GETPOSTISSET('budget_amount') ? GETPOST('budget_amount') : '').'"></td>';
|
||||
print '</tr>';
|
||||
|
||||
// Other options
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $taskstatic, $action); // Note that $action and $object may have been modified by hook
|
||||
@ -944,6 +960,12 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third
|
||||
}
|
||||
*/
|
||||
|
||||
if (!empty($arrayfields['t.budget_amount']['checked'])) {
|
||||
print '<td class="liste_titre center">';
|
||||
print '<input type="text" class="flat" name="search_task_budget_amount" value="'.$search_task_budget_amount.'" size="4">';
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
if (!empty($arrayfields['c.assigned']['checked'])) {
|
||||
print '<td class="liste_titre right">';
|
||||
print '</td>';
|
||||
@ -1005,6 +1027,11 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third
|
||||
print_liste_field_titre("TaskRessourceLinks", $_SERVER["PHP_SELF"], '', '', $param, $sortfield, $sortorder);
|
||||
}
|
||||
*/
|
||||
|
||||
if (!empty($arrayfields['t.budget_amount']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['t.budget_amount']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||
}
|
||||
|
||||
if (!empty($arrayfields['c.assigned']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['c.assigned']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'center ', '');
|
||||
}
|
||||
|
||||
@ -65,6 +65,7 @@ $search_task_ref_parent = GETPOST('search_task_ref_parent');
|
||||
$search_project_user = GETPOST('search_project_user', 'int');
|
||||
$search_task_user = GETPOST('search_task_user', 'int');
|
||||
$search_task_progress = GETPOST('search_task_progress');
|
||||
$search_task_budget_amount = GETPOST('search_task_budget_amount');
|
||||
$search_societe = GETPOST('search_societe');
|
||||
|
||||
$mine = $_REQUEST['mode'] == 'mine' ? 1 : 0;
|
||||
@ -154,6 +155,7 @@ $arrayfields = array(
|
||||
't.progress_calculated'=>array('label'=>"ProgressCalculated", 'checked'=>1, 'position'=>104),
|
||||
't.progress'=>array('label'=>"ProgressDeclared", 'checked'=>1, 'position'=>105),
|
||||
't.progress_summary'=>array('label'=>"TaskProgressSummary", 'checked'=>1, 'position'=>106),
|
||||
't.budget_amount'=>array('label'=>"Budget", 'checked'=>1, 'position'=>107),
|
||||
't.tobill'=>array('label'=>"TimeToBill", 'checked'=>0, 'position'=>110),
|
||||
't.billed'=>array('label'=>"TimeBilled", 'checked'=>0, 'position'=>111),
|
||||
't.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500),
|
||||
@ -200,6 +202,7 @@ if (empty($reshook)) {
|
||||
$search_task_description = "";
|
||||
$search_task_ref_parent = "";
|
||||
$search_task_progress = "";
|
||||
$search_task_budget_amount = "";
|
||||
$search_task_user = -1;
|
||||
$search_project_user = -1;
|
||||
$search_date_startday = '';
|
||||
@ -314,6 +317,7 @@ $sql .= " s.nom as name, s.rowid as socid,";
|
||||
$sql .= " t.datec as date_creation, t.dateo as date_start, t.datee as date_end, t.tms as date_update,";
|
||||
$sql .= " t.rowid as id, t.ref, t.label, t.planned_workload, t.duration_effective, t.progress, t.fk_statut, ";
|
||||
$sql .= " t.description, t.fk_task_parent";
|
||||
$sql .= " ,t.budget_amount";
|
||||
// We'll need these fields in order to filter by categ
|
||||
if ($search_categ) {
|
||||
$sql .= ", cs.fk_categorie, cs.fk_project";
|
||||
@ -390,6 +394,9 @@ if ($search_task_ref_parent) {
|
||||
if ($search_task_progress) {
|
||||
$sql .= natural_search('t.progress', $search_task_progress, 1);
|
||||
}
|
||||
if ($search_task_budget_amount) {
|
||||
$sql .= natural_search('t.budget_amount', $search_task_budget_amount, 1);
|
||||
}
|
||||
if ($search_societe) {
|
||||
$sql .= natural_search('s.nom', $search_societe);
|
||||
}
|
||||
@ -431,7 +438,7 @@ if (!empty($arrayfields['t.tobill']['checked']) || !empty($arrayfields['t.billed
|
||||
$sql .= " GROUP BY p.rowid, p.ref, p.title, p.fk_statut, p.datee, p.fk_opp_status, p.public, p.fk_user_creat,";
|
||||
$sql .= " s.nom, s.rowid,";
|
||||
$sql .= " t.datec, t.dateo, t.datee, t.tms,";
|
||||
$sql .= " t.rowid, t.ref, t.label, t.planned_workload, t.duration_effective, t.progress, t.fk_statut";
|
||||
$sql .= " t.rowid, t.ref, t.label, t.planned_workload, t.duration_effective, t.progress,t.budget_amount, t.fk_statut";
|
||||
if ($search_categ) {
|
||||
$sql .= ", cs.fk_categorie, cs.fk_project";
|
||||
}
|
||||
@ -521,6 +528,9 @@ if ($search_datelimit_endmonth) {
|
||||
if ($search_datelimit_endyear) {
|
||||
$param .= '&search_datelimit_endyear='.urlencode($search_datelimit_endyear);
|
||||
}
|
||||
if ($search_task_budget_amount) {
|
||||
$param .= '&search_task_budget_amount='.urlencode($search_task_budget_amount);
|
||||
}
|
||||
if ($socid) {
|
||||
$param .= '&socid='.urlencode($socid);
|
||||
}
|
||||
@ -760,6 +770,13 @@ if (!empty($arrayfields['t.progress']['checked'])) {
|
||||
if (!empty($arrayfields['t.progress_summary']['checked'])) {
|
||||
print '<td class="liste_titre"></td>';
|
||||
}
|
||||
|
||||
if (!empty($arrayfields['t.budget_amount']['checked'])) {
|
||||
print '<td class="liste_titre center">';
|
||||
print '<input type="text" class="flat" name="search_task_budget_amount" value="'.$search_task_budget_amount.'" size="4">';
|
||||
print '</td>';
|
||||
}
|
||||
|
||||
if (!empty($arrayfields['t.tobill']['checked'])) {
|
||||
print '<td class="liste_titre"></td>';
|
||||
}
|
||||
@ -835,6 +852,9 @@ if (!empty($arrayfields['t.progress']['checked'])) {
|
||||
if (!empty($arrayfields['t.progress_summary']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['t.progress_summary']['label'], $_SERVER["PHP_SELF"], "t.progress", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||
}
|
||||
if (!empty($arrayfields['t.budget_amount']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['t.budget_amount']['label'], $_SERVER["PHP_SELF"], "t.budget_amount", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||
}
|
||||
if (!empty($arrayfields['t.tobill']['checked'])) {
|
||||
print_liste_field_titre($arrayfields['t.tobill']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'center ');
|
||||
}
|
||||
@ -877,6 +897,7 @@ while ($i < min($num, $limit)) {
|
||||
$object->description = $obj->description;
|
||||
$object->fk_statut = $obj->fk_statut;
|
||||
$object->progress = $obj->progress;
|
||||
$object->budget_amount = $obj->budget_amount;
|
||||
$object->date_start = $db->jdate($obj->date_start);
|
||||
$object->date_end = $db->jdate($obj->date_end);
|
||||
$object->planned_workload = $obj->planned_workload;
|
||||
@ -1116,6 +1137,22 @@ while ($i < min($num, $limit)) {
|
||||
$totalarray['totalprogress_summary'] = $totalarray['nbfield'];
|
||||
}
|
||||
}
|
||||
if (!empty($arrayfields['t.budget_amount']['checked'])) {
|
||||
print '<td class="center">';
|
||||
print price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency);
|
||||
if (!$i) {
|
||||
$totalarray['nbfield']++;
|
||||
}
|
||||
if (!$i) {
|
||||
$totalarray['pos'][$totalarray['nbfield']] = 't.budget_amount';
|
||||
}
|
||||
$totalarray['val']['t.budget_amount'] += $obj->budget_amount;
|
||||
if (!$i) {
|
||||
$totalarray['totalbudget_amount'] = $totalarray['nbfield'];
|
||||
}
|
||||
$totalarray['totalbudgetamount'] += $obj->budget_amount;
|
||||
print '</td>';
|
||||
}
|
||||
// Time not billed
|
||||
if (!empty($arrayfields['t.tobill']['checked'])) {
|
||||
print '<td class="center">';
|
||||
@ -1232,6 +1269,8 @@ if (isset($totalarray['totaldurationeffectivefield']) || isset($totalarray['tota
|
||||
print '<td class="center">'.convertSecondToTime($totalarray['totaltobill'], $plannedworkloadoutputformat).'</td>';
|
||||
} elseif ($totalarray['totalbilledfield'] == $i) {
|
||||
print '<td class="center">'.convertSecondToTime($totalarray['totalbilled'], $plannedworkloadoutputformat).'</td>';
|
||||
} elseif ($totalarray['totalbudget_amount'] == $i) {
|
||||
print '<td class="center">'.price($totalarray['totalbudgetamount'], 0, $langs, 1, 0, 0, $conf->currency).'</td>';
|
||||
} else {
|
||||
print '<td></td>';
|
||||
}
|
||||
|
||||
@ -105,6 +105,7 @@ if ($action == 'update' && !GETPOST("cancel") && $user->rights->projet->creer) {
|
||||
$object->date_start = dol_mktime(GETPOST('dateohour', 'int'), GETPOST('dateomin', 'int'), 0, GETPOST('dateomonth', 'int'), GETPOST('dateoday', 'int'), GETPOST('dateoyear', 'int'));
|
||||
$object->date_end = dol_mktime(GETPOST('dateehour', 'int'), GETPOST('dateemin', 'int'), 0, GETPOST('dateemonth', 'int'), GETPOST('dateeday', 'int'), GETPOST('dateeyear', 'int'));
|
||||
$object->progress = price2num(GETPOST('progress', 'alphanohtml'));
|
||||
$object->budget_amount = price2num(GETPOST('budget_amount', 'alphanohtml'));
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost(null, $object);
|
||||
@ -442,6 +443,10 @@ if ($id > 0 || !empty($ref)) {
|
||||
print '<textarea name="description" class="quatrevingtpercent" rows="'.ROWS_4.'">'.$object->description.'</textarea>';
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td>'.$langs->trans("Budget").'</td>';
|
||||
print '<td><input size="5" type="text" name="budget_amount" value="'.dol_escape_htmltag(GETPOSTISSET('budget_amount') ? GETPOST('budget_amount') : price2num($object->budget_amount)).'"></td>';
|
||||
print '</tr>';
|
||||
|
||||
// Other options
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
@ -564,6 +569,13 @@ if ($id > 0 || !empty($ref)) {
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Budget
|
||||
print '<tr><td>'.$langs->trans("Budget").'</td><td>';
|
||||
if (strcmp($object->budget_amount, '')) {
|
||||
print price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency);
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
// Other attributes
|
||||
$cols = 3;
|
||||
$parameters = array('socid'=>$socid);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user