Skip to content

Commit

Permalink
FIX #24
Browse files Browse the repository at this point in the history
changes task tab in plot card and added a new query in class
  • Loading branch information
bgenere committed Mar 28, 2017
1 parent e1334de commit 56bfdb6
Show file tree
Hide file tree
Showing 2 changed files with 179 additions and 39 deletions.
92 changes: 92 additions & 0 deletions class/plotcultivationtask.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,98 @@ public function fetchAll($sortorder = '', $sortfield = '', $limit = 0, $offset =
}
}

/**
* Load list of plot task progress by contributors.
*
* @param string $sortorder
* @param string $sortfield
* @param number $limit
* @param number $offset
* @param array $filter
* @param string $filtermode
* @return number
*/
public function fetchAllProgress($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND')
{
dol_syslog(__METHOD__, LOG_DEBUG);

$sql = 'SELECT';
$sql .= ' t.rowid,';
$sql .= " t.entity,";
$sql .= " t.fk_plot,";
$sql .= " t.fk_task,";
$sql .= " task.ref as taskref,";
$sql .= " task.label as tasklabel,";
$sql .= " task.dateo as taskopen,";
$sql .= " task.datee as taskend,";
$sql .= " t.coverage as coverage,";
$sql .= " t.note as note,";
$sql .= " pt.task_date as date,";
$sql .= " pt.fk_user as userid,";
$sql .= " u.firstname,u.lastname,";
$sql .= " pp.progress as progress,";
$sql .= " t.tms,";
$sql .= " t.datec,";
$sql .= " t.fk_user_author,";
$sql .= " t.fk_user_modif";

$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t';
$sql .= ' JOIN ' . MAIN_DB_PREFIX . 'projet_task as task ON t.fk_task = task.rowid';
$sql .= " LEFT OUTER JOIN " . MAIN_DB_PREFIX . "projet_task_time as pt ON pt.fk_task = t.fk_task ";
$sql .= " JOIN " . MAIN_DB_PREFIX . "plot_taskprogress as pp ON pp.fk_tasktime = pt.rowid AND pp.fk_plot = t.fk_plot ";
$sql .= " JOIN " . MAIN_DB_PREFIX . "user as u ON pt.fk_user = u.rowid ";


// Manage filter
$sqlwhere = array();
if (count($filter) > 0) {
$sql .= ' WHERE ' . implode(' ' . $filtermode . ' ', $filter);
}

if (! empty($sortfield)) {
$sql .= $this->db->order($sortfield, $sortorder);
}
if (! empty($limit)) {
$sql .= ' ' . $this->db->plimit($limit , $offset);
}
$this->lines = array();

$resql = $this->db->query($sql);
if ($resql) {
$num = $this->db->num_rows($resql);

while ($obj = $this->db->fetch_object($resql)) {
$line = new plotcultivationtaskLine();

$line->id = $obj->rowid;

$line->entity = $obj->entity;
$line->fk_plot = $obj->fk_plot;
$line->fk_task = $obj->fk_task;
$line->coverage = $obj->coverage;
$line->note = $obj->note;
$line->date = $obj->date;
$line->userid = $obj->userid;
$line->firstname = $obj->firstname;
$line->lastname = $obj->lastname;
$line->progress = $obj->progress;
$line->tms = $this->db->jdate($obj->tms);
$line->datec = $this->db->jdate($obj->datec);
$line->fk_user_author = $obj->fk_user_author;
$line->fk_user_modif = $obj->fk_user_modif;

$this->lines[] = $line;
}
$this->db->free($resql);

return $num;
} else {
$this->errors[] = 'Error ' . $this->db->lasterror();
dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR);

return - 1;
}
}
/**
* Update object into database
*
Expand Down
126 changes: 87 additions & 39 deletions plot_card.php
Original file line number Diff line number Diff line change
Expand Up @@ -261,13 +261,12 @@ function deletePlot(plot $object)
}
}


/**
* Build plot document
*
*
* Not in use yet - see comments end of page.
*
* @param plot $object
*
* @param plot $object
*/
function buildPlotDocument(plot $object)
{
Expand Down Expand Up @@ -364,15 +363,14 @@ function displayPlotEditForm(plot $object, ExtraFields $extrafields)
print '</form>';
}


/**
* Display the proper Plot Tab based on the tab parameter usin GETPOST.
*
*
* Support tabs : tasks, notes, info and card as default.
*
* @param string $action
* @param plot $object
* @param ExtraFields $extrafields
*
* @param string $action
* @param plot $object
* @param ExtraFields $extrafields
*/
function displayPlotTab($action, plot $object, ExtraFields $extrafields)
{
Expand Down Expand Up @@ -412,9 +410,9 @@ function displayPlotTab($action, plot $object, ExtraFields $extrafields)

/**
* Display the plot card in read mode
*
*
* When $action = delete a confirmation popup
*
*
* @param string $action
* @param plot $object
* @param ExtraFields $extrafields
Expand Down Expand Up @@ -457,12 +455,12 @@ function displayPlotCard($action, plot $object, ExtraFields $extrafields, Form $

/**
* Display the tasks table for the plot.
*
*
* The table could be sorted and searched on all fields
* Search on date define an interval between start and end
*
* @param plot $plot
* @param Form $form
*
* @param plot $plot
* @param Form $form
*/
function displayPlotTasks(plot $plot, Form $form)
{
Expand All @@ -484,11 +482,16 @@ function displayPlotTasks(plot $plot, Form $form)

// Fields header
print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Task"), $_SERVER['PHP_SELF'], 'taskref', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("DateStart"), $_SERVER['PHP_SELF'], 'taskopen', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("DateEnd"), $_SERVER['PHP_SELF'], 'taskend', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("Note"), $_SERVER['PHP_SELF'], 'note', '', $params, 'style="width:20%;"', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("ProgressDeclared"), $_SERVER['PHP_SELF'], 'coverage', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("Task"), $_SERVER['PHP_SELF'], 'taskref,date', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("DateStart"), $_SERVER['PHP_SELF'], 'taskopen,taskref,date', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("DateEnd"), $_SERVER['PHP_SELF'], 'taskend,taskref,date', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("Note"), $_SERVER['PHP_SELF'], 'note,taskref,date', '', $params, 'style="width:20%;"', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("ProgressDeclared"), $_SERVER['PHP_SELF'], 'coverage,taskref,date', '', $params, '', $sort["field"], $sort["order"]);
print '<td width="10 px"> ';
print '</td>';
print_liste_field_titre($langs->trans("Date"), $_SERVER['PHP_SELF'], 'date,taskref', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("By"), $_SERVER['PHP_SELF'], 'firstname,lastname,taskref,date', '', $params, '', $sort["field"], $sort["order"]);
print_liste_field_titre($langs->trans("Progress"), $_SERVER['PHP_SELF'], 'progress,taskref,date', '', $params, '', $sort["field"], $sort["order"]);
print '<td class=" right"> ';
print '</td>';
print "</tr>";
Expand All @@ -499,21 +502,23 @@ function displayPlotTasks(plot $plot, Form $form)
print '<td >' . $form->select_date((empty($filter['end']) ? - 1 : $filter['end']), 'search_end', 0, 0, 2, "search_end", 1, 0, 1) . '</td>';
print '<td ><input type="text" class="flat" name="search_note" value="' . $filter["note"] . '"></td>';
print '<td ><input type="text" class="flat" name="search_coverage" value="' . $filter["coverage"] . '"></td>';
print '<td > </td>';
print '<td > </td>';
print '<td ><input type="text" class="flat" name="search_by" value="' . $filter["by"] . '"></td>';
print '<td > </td>';
// // Action column
print '<td class=" right">';
print $form->showFilterAndCheckAddButtons(0, 'checkforselect', 1);
print '</td>';
print '</tr>';

$plottask = new Plotcultivationtask($db);
if ($plottask->fetchAll($sort["order"], $sort["field"], 0, 0, $filter["plot"], 'AND')) {
if ($plottask->fetchAllProgress($sort["order"], $sort["field"], 0, 0, $filter["plot"], 'AND')) {
displayPlotTaskLines($plottask);
}
print '</table>';
print '</div>';
print '</form>';


}

/**
Expand All @@ -527,7 +532,7 @@ function getTasksort()
{
$sortfield = GETPOST(sortfield, 'alpha');
if (empty($sortfield)) {
$sortfield = 'taskref';
$sortfield = 'taskref,date';
}
$sortorder = GETPOST(sortorder, 'alpha');
if (empty($sortorder)) {
Expand Down Expand Up @@ -563,6 +568,7 @@ function getTaskfilter($id)
$search_note = '';
$search_coverage = '';
$search_tasklabel = '';
$search_by = '';
$search_begin = '';
$search_beginday = '';
$search_beginmonth = '';
Expand All @@ -576,6 +582,10 @@ function getTaskfilter($id)
if (! empty($search_tasklabel))
$plotfilter[] = "task.label LIKE '%" . $search_tasklabel . "%'";

$search_by = GETPOST('search_by', 'alpha');
if (! empty($search_by))
$plotfilter[] = "(u.firstname LIKE '%" . $search_by . "%' OR u.lastname LIKE '%" . $search_by . "%' )";

$search_note = GETPOST('search_note', 'alpha');
if (! empty($search_note))
$plotfilter[] = "t.note LIKE '%" . $search_note . "%'";
Expand All @@ -596,7 +606,7 @@ function getTaskfilter($id)
$search_end = GETPOST("search_end");
}
if (! empty($search_end))
$plotfilter[] = "DATE(task.datee) <= '" . $search_end."'";
$plotfilter[] = "DATE(task.datee) <= '" . $search_end . "'";
}
$filter = array(
"id" => $id,
Expand All @@ -605,6 +615,7 @@ function getTaskfilter($id)
"end" => $search_end,
"note" => $search_note,
"coverage" => $search_coverage,
"by" => $search_by,
"plot" => $plotfilter
);
return $filter;
Expand All @@ -624,12 +635,14 @@ function buildTaskSearchParameters($filter)
$params = "";
if (! empty($filter["id"]))
$params .= '&amp;tab=tasks&amp;id=' . $filter["id"];
if (! empty($filter["reference"]))
$params .= '&amp;search_reference=' . urlencode($filter["reference"]);
if (! empty($filter["tasklabel"]))
$params .= '&amp;search_tasklabel=' . urlencode($filter["tasklabel"]);
if (! empty($filter["note"]))
$params .= '&amp;search_note=' . urlencode($filter["note"]);
if (! empty($filter["coverage"]))
$params .= '&amp;search_coverage=' . urlencode($filter["coverage"]);
if (! empty($filter["by"]))
$params .= '&amp;search_by=' . urlencode($filter["by"]);

return $params;
}
Expand All @@ -646,45 +659,80 @@ function displayPlotTaskLines($plottask)
{
Global $db, $conf, $user, $langs;

$prevtaskid = 0;
foreach ($plottask->lines as $line) {

$var = ! $var;
print "<tr " . $bc[$var] . ">";
if ($prevtaskid == $line->fk_task) {
$newline = 0;
} else {
$newline = 1;
}
// Task
print '<td >';
if ($newline){
$task = new Task($db);
$task->fetch($line->fk_task);
print '<td >';
//print $task->getNomUrl(1, 'projet_task', 'task', 1, ' - ');
$url = dol_buildpath('/vignoble/cultivationtaskplot.php?id='.$task->id, 1);
print '<a href="'.$url.'">';
print $task->ref.'</a>'.' - '.$task->label;
$url = dol_buildpath('/vignoble/cultivationtaskplot.php?id=' . $task->id, 1);
print '<a href="' . $url . '">';
print $task->ref . '</a>' . ' - ' . $task->label;
}
print '</td>';
// Start date
print '<td >';
print dol_print_date($task->date_start);
if ($newline){
print dol_print_date($task->date_start, "day");
}
print '</td>';
// End date
print '<td >';
print dol_print_date($task->date_end);
if ($newline){
print dol_print_date($task->date_end, "day");
}
print '</td>';
// Note
print '<td >';
if ($newline){
print dol_nl2br($line->note);
}
print '</td>';
// Coverage
print '<td>';
if ($newline){
print $line->coverage . '%';
}
print '</td>';
// blank column
print '<td> ';
print '</td>';
// Date
print '<td>';
print dol_print_date($line->date, "day");
print '</td>';
// By
print '<td>';
$lineuser = new User($db);
$lineuser->id = $line->userid;
$lineuser->lastname = $line->lastname;
$lineuser->firstname = $line->firstname;
print $lineuser->getNomUrl(1);
print '</td>';
// Progress
print '<td>';
print $line->progress . '%';
print '</td>';

print '</tr>';
$prevtaskid = $line->fk_task;
}
}

/**
* Set up the 4 Tabs : Card, Tasks, Notes, Info
*
* @param plot $object
*
*
* @param plot $object
*
*/
function getTabsHeader($langs, $object)
{
Expand Down

0 comments on commit 56bfdb6

Please sign in to comment.