diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 93c0e6cf7f004ef30876b623df39d9be2c1992f4..26cdeec151c35b8b8f0d06da1c47c4420b0d9c8b 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -398,7 +398,7 @@ class Project extends CommonObject * @param string $datefieldname name of table associated of the type * @param string $dates Start date (at 00:00:00) * @param string $datee End date (at 23:00:00) - * @return mixed List of orders linked to project, < 0 or string if error + * @return mixed Array list of object ids linked to project, < 0 or string if error */ function get_element_list($type, $tablename, $datefieldname='', $dates='', $datee='') { diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 2e447e1556849a1b9a5a3e4ae1b5f254c3241583..cf9ccbcc4ce7a19f63cc4e525a9a8534be578986 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -272,6 +272,8 @@ foreach ($listofreferent as $key => $value) if ($qualified) { + $element = new $classname($db); + if (! $showdatefilter) { print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$projectid.'" method="post">'; @@ -336,6 +338,9 @@ foreach ($listofreferent as $key => $value) $total_ht_by_third = 0; $total_ttc_by_third = 0; + $saved_third_id = 0; + $breakline = ''; + if (canApplySubtotalOn($tablename)) { // Appel du mon code de tri : $elementarray = sortElementsByClientName($elementarray); @@ -344,11 +349,22 @@ foreach ($listofreferent as $key => $value) $num=count($elementarray); for ($i = 0; $i < $num; $i++) { - $element = new $classname($db); $element->fetch($elementarray[$i]); $element->fetch_thirdparty(); //print $classname; + if ($breakline && $saved_third_id != $element->thirdparty->id) + { + print $breakline; + $var = true; + + $saved_third_id = $element->thirdparty->id; + $breakline = ''; + + $total_ht_by_third=0; + $total_ttc_by_third=0; + } + $qualifiedfortotal=true; if ($key == 'invoice') { @@ -417,34 +433,26 @@ foreach ($listofreferent as $key => $value) $total_ttc_by_third += $element->total_ttc; } - // Autre partie de mon code : if (canApplySubtotalOn($tablename)) { - $next_third_id = (isset($elementarray[$i+1])) ? $elementarray[$i+1] : ''; - $third_id = $element->thirdparty->id; - if ($third_id != $next_third_id) - { - print '<tr class="liste_total">'; - print '<td colspan="2">'; - print '</td>'; - print '<td>'; - print '</td>'; - print '<td class="right">'; - print $langs->trans('SubTotal').' : '; - if (is_object($element->thirdparty)) print $element->thirdparty->getNomUrl(0,'',48); - print '</td>'; - print '<td align="right">'.price($total_ht).'</td>'; - print '<td align="right">'.price($total_ttc).'</td>'; - print '<td></td>'; - print '</tr>'; - - $total_ht_by_third = 0; - $total_ttc_by_third = 0; - $var=true; - } + $breakline='<tr class="liste_total">'; + $breakline.='<td colspan="2">'; + $breakline.='</td>'; + $breakline.='<td>'; + $breakline.='</td>'; + $breakline.='<td class="right">'; + $breakline.=$langs->trans('SubTotal').' : '; + if (is_object($element->thirdparty)) $breakline.=$element->thirdparty->getNomUrl(0,'',48); + $breakline.='</td>'; + $breakline.='<td align="right">'.price($total_ht_by_third).'</td>'; + $breakline.='<td align="right">'.price($total_ttc_by_third).'</td>'; + $breakline.='<td></td>'; + $breakline.='</tr>'; } } + if ($breakline) print $breakline; + print '<tr class="liste_total"><td colspan="4">'.$langs->trans("Number").': '.$i.'</td>'; if (empty($value['disableamount'])) print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_ht).'</td>'; else print '<td></td>'; @@ -524,6 +532,8 @@ foreach ($listofreferent as $key => $value) $margin = $value['margin']; if (isset($margin)) { + $element = new $classname($db); + $elementarray = $project->get_element_list($key, $tablename); if (count($elementarray)>0 && is_array($elementarray)) { @@ -533,7 +543,6 @@ foreach ($listofreferent as $key => $value) $num=count($elementarray); for ($i = 0; $i < $num; $i++) { - $element = new $classname($db); $element->fetch($elementarray[$i]); $element->fetch_thirdparty(); //print $classname; @@ -607,23 +616,25 @@ function sortElementsByClientName($elementarray) $element = new $classname($db); $clientname = array(); - foreach ($elementarray as $key => $id) + foreach ($elementarray as $key => $id) // id = id of object { if (empty($clientname[$id])) { - $element->id = $id; + $element->fetch($id); $element->fetch_thirdparty(); + $clientname[$id] = $element->thirdparty->name; } } - asort($clientname); + //var_dump($clientname); + asort($clientname); // sort on name $elementarray = array(); - foreach ($clientname as $id => $name) { + foreach ($clientname as $id => $name) + { $elementarray[] = $id; } return $elementarray; } -