diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 541a94cb925e6fedec0f2d1edd5397dc50487ea4..0a6c0381e9083f6ab2304c5076bef8e2f17bb3ec 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -81,6 +81,8 @@ class ActionComm extends CommonObject // Ical var $icalname; var $icalcolor; + + var $actions=array(); /** @@ -243,7 +245,7 @@ class ActionComm extends CommonObject $sql.= " a.priority, a.fulldayevent, a.location,"; $sql.= " c.id as type_id, c.code as type_code, c.libelle,"; $sql.= " s.nom as socname,"; - $sql.= " u.firstname, u.name"; + $sql.= " u.firstname, u.name as lastname"; $sql.= " FROM (".MAIN_DB_PREFIX."c_actioncomm as c, ".MAIN_DB_PREFIX."actioncomm as a)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on u.rowid = a.fk_user_author"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on s.rowid = a.fk_soc"; @@ -266,32 +268,34 @@ class ActionComm extends CommonObject $type_libelle=($transcode!="Action".$obj->type_code?$transcode:$obj->libelle); $this->type = $type_libelle; - $this->label = $obj->label; - $this->datep = $this->db->jdate($obj->datep); - $this->datef = $this->db->jdate($obj->datep2); + $this->label = $obj->label; + $this->datep = $this->db->jdate($obj->datep); + $this->datef = $this->db->jdate($obj->datep2); - $this->datec = $this->db->jdate($obj->datec); - $this->datem = $this->db->jdate($obj->datem); + $this->datec = $this->db->jdate($obj->datec); + $this->datem = $this->db->jdate($obj->datem); - $this->note = $obj->note; - $this->percentage = $obj->percentage; + $this->note = $obj->note; + $this->percentage = $obj->percentage; - $this->author->id = $obj->fk_user_author; - $this->usermod->id = $obj->fk_user_mod; + $this->author->id = $obj->fk_user_author; + $this->author->firstname = $obj->firstname; + $this->author->lastname = $obj->lastname; + $this->usermod->id = $obj->fk_user_mod; - $this->usertodo->id = $obj->fk_user_action; - $this->userdone->id = $obj->fk_user_done; - $this->priority = $obj->priority; - $this->fulldayevent = $obj->fulldayevent; - $this->location = $obj->location; + $this->usertodo->id = $obj->fk_user_action; + $this->userdone->id = $obj->fk_user_done; + $this->priority = $obj->priority; + $this->fulldayevent = $obj->fulldayevent; + $this->location = $obj->location; - $this->socid = $obj->fk_soc; // To have fetch_thirdparty method working - $this->societe->id = $obj->fk_soc; - $this->contact->id = $obj->fk_contact; - $this->fk_project = $obj->fk_project; + $this->socid = $obj->fk_soc; // To have fetch_thirdparty method working + $this->societe->id = $obj->fk_soc; + $this->contact->id = $obj->fk_contact; + $this->fk_project = $obj->fk_project; - $this->fk_element = $obj->fk_element; - $this->elementtype = $obj->elementtype; + $this->fk_element = $obj->fk_element; + $this->elementtype = $obj->elementtype; } $this->db->free($resql); return 1; @@ -385,6 +389,50 @@ class ActionComm extends CommonObject } } + /** + * Load all objects with filters + * @param socid Filter by thirdparty + * @param filter Other filter + */ + function getActions($socid=0, $fk_element=0, $elementtype='', $filter='') + { + global $conf, $langs; + + $sql = "SELECT a.id"; + $sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a"; + $sql.= " WHERE a.entity = ".$conf->entity; + if ($socid) $sql.= " AND a.fk_soc = ".$socid; + if ($elementtype!='') + { + if ($elementtype == 'project') $sql.= ' AND a.fk_project = '.$fk_element; + else $sql.= " AND a.fk_element = ".$fk_element." AND a.elementtype = '".$elementtype."'"; + } + if ($filter) $sql.= $filter; + + dol_syslog("ActionComm::fetchAll sql=".$sql); + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + + if ($num) + { + for($i=0;$i<$num;$i++) + { + $obj = $this->db->fetch_object($resql); + $this->fetch($obj->id); + $this->actions[$i] = $this; + } + } + $this->db->free($resql); + return 1; + } + else + { + $this->error=$this->db->lasterror(); + return -1; + } + } /** * Load indicators for dashboard (this->nbtodo and this->nbtodolate) diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 377d3247c6d316eaa2d2ee5b92d9290c74d14390..c933971ce0c29ad5674455014fedd2a32c20af92 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -103,59 +103,48 @@ class FormActions { global $langs,$conf,$user; global $bc; - - $sql = 'SELECT a.id, a.datep as da, a.label, a.note,'; - $sql.= ' u.login'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a, '.MAIN_DB_PREFIX.'user as u'; - $sql.= ' WHERE a.fk_user_author = u.rowid'; - if ($socid) $sql .= ' AND a.fk_soc = '.$socid; - if ($typeelement == 'project') $sql.= ' AND a.fk_project = '.$object->id; - else $sql.= " AND a.fk_element = ".$object->id." AND a.elementtype = '".$typeelement."'"; - - dol_syslog("FormActions::showactions sql=".$sql); - $resql = $this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - if ($num) - { - if ($typeelement == 'invoice') $title=$langs->trans('ActionsOnBill'); - if ($typeelement == 'invoice_supplier' || $typeelement == 'supplier_invoice') $title=$langs->trans('ActionsOnBill'); - if ($typeelement == 'propal') $title=$langs->trans('ActionsOnPropal'); - if ($typeelement == 'order') $title=$langs->trans('ActionsOnOrder'); - if ($typeelement == 'order_supplier' || $typeelement == 'supplier_order') $title=$langs->trans('ActionsOnOrder'); - if ($typeelement == 'project') $title=$langs->trans('ActionsOnProject'); - if ($typeelement == 'shipping') $title=$langs->trans('ActionsOnShipping'); - - print_titre($title); - - $i = 0; $total = 0; $var=true; - print '<table class="border" width="100%">'; - print '<tr '.$bc[$var].'><td>'.$langs->trans('Ref').'</td><td>'.$langs->trans('Date').'</td><td>'.$langs->trans('Action').'</td><td>'.$langs->trans('By').'</td></tr>'; - print "\n"; - - while ($i < $num) - { - $objp = $this->db->fetch_object($resql); - $var=!$var; - print '<tr '.$bc[$var].'>'; - print '<td><a href="'.DOL_URL_ROOT.'/comm/action/fiche.php?id='.$objp->id.'">'.img_object($langs->trans('ShowTask'),'task').' '.$objp->id.'</a></td>'; - print '<td>'.dol_print_date($this->db->jdate($objp->da),'day').'</td>'; - print '<td title="'.dol_escape_htmltag($objp->label).'">'.dol_trunc($objp->label,32).'</td>'; - print '<td>'.$objp->login.'</td>'; - print '</tr>'; - $i++; - } - print '</table>'; - } - - return $num; - } - else + + require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php"); + + $actioncomm = new ActionComm($this->db); + $actioncomm->getActions($socid, $object->id, $typeelement); + + $num = count($actioncomm->actions); + if ($num) { - dol_print_error($this->db); - return -1; + if ($typeelement == 'invoice') $title=$langs->trans('ActionsOnBill'); + if ($typeelement == 'invoice_supplier' || $typeelement == 'supplier_invoice') $title=$langs->trans('ActionsOnBill'); + if ($typeelement == 'propal') $title=$langs->trans('ActionsOnPropal'); + if ($typeelement == 'order') $title=$langs->trans('ActionsOnOrder'); + if ($typeelement == 'order_supplier' || $typeelement == 'supplier_order') $title=$langs->trans('ActionsOnOrder'); + if ($typeelement == 'project') $title=$langs->trans('ActionsOnProject'); + if ($typeelement == 'shipping') $title=$langs->trans('ActionsOnShipping'); + + print_titre($title); + + $total = 0; $var=true; + print '<table class="border" width="100%">'; + print '<tr '.$bc[$var].'><td>'.$langs->trans('Ref').'</td><td>'.$langs->trans('Date').'</td><td>'.$langs->trans('Action').'</td><td>'.$langs->trans('By').'</td></tr>'; + print "\n"; + + foreach($actioncomm->actions as $action) + { + $var=!$var; + print '<tr '.$bc[$var].'>'; + print '<td>'.$action->getNomUrl(1).'</td>'; + print '<td>'.dol_print_date($action->datep,'day').'</td>'; + print '<td title="'.dol_escape_htmltag($action->label).'">'.dol_trunc($action->label,32).'</td>'; + $userstatic = new User($this->db); + $userstatic->id = $action->author->id; + $userstatic->prenom = $action->author->firstname; + $userstatic->nom = $action->author->lastname; + print '<td>'.$userstatic->getNomUrl(1).'</td>'; + print '</tr>'; + } + print '</table>'; } + + return $num; }