diff --git a/htdocs/adherents/canvas/actions_adherentcard_common.class.php b/htdocs/adherents/canvas/actions_adherentcard_common.class.php index a749ff269e5a0911992e4c56c278fc30f5ecd7ff..c768b019d69e447e0cf8289cea0da2e71918d763 100644 --- a/htdocs/adherents/canvas/actions_adherentcard_common.class.php +++ b/htdocs/adherents/canvas/actions_adherentcard_common.class.php @@ -182,7 +182,7 @@ abstract class ActionsAdherentCardCommon $this->object->old_name = $_POST["old_name"]; $this->object->old_firstname = $_POST["old_firstname"]; - $result = $this->object->delete(); + $result = $this->object->delete(0, $user, 0); if ($result > 0) { header("Location: list.php"); @@ -424,7 +424,7 @@ abstract class ActionsAdherentCardCommon if ($resql) { $obj = $this->db->fetch_object($resql); - + $this->object->country_code = $obj->code; $this->object->country = $langs->trans("Country".$obj->code)?$langs->trans("Country".$obj->code):$obj->libelle; } diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 81aa2c7c6adf73c43ba708fce646428d39f4474a..fe3bd4f4cfd174efa2a26237475de3993b361da9 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -585,7 +585,7 @@ if (empty($reshook)) if ($user->rights->adherent->supprimer && $action == 'confirm_delete' && $confirm == 'yes') { - $result=$object->delete($id); + $result=$object->delete($id, $user); if ($result > 0) { if (! empty($backtopage)) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 20f5fa671c975fdc4d3defa168631077f08e5653..18e144c363cdba2720133a3f1ca7e62156f70cef 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -705,11 +705,13 @@ class Adherent extends CommonObject * Fonction qui supprime l'adherent et les donnees associees * * @param int $rowid Id of member to delete + * @param User $user User object + * @param int $notrigger 1=Does not execute triggers, 0= execute triggers * @return int <0 if KO, 0=nothing to do, >0 if OK */ - function delete($rowid) + function delete($rowid, $user, $notrigger=0) { - global $conf, $langs, $user; + global $conf, $langs; $result = 0; $error=0; @@ -720,6 +722,14 @@ class Adherent extends CommonObject $this->db->begin(); + if (! $error && ! $notrigger) + { + // Call trigger + $result=$this->call_trigger('MEMBER_DELETE',$user); + if ($result < 0) $error++; + // End call triggers + } + // Remove category $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".$rowid; dol_syslog(get_class($this)."::delete", LOG_DEBUG); @@ -787,16 +797,6 @@ class Adherent extends CommonObject } } - if (! $error) - { - // Call trigger - $result=$this->call_trigger('MEMBER_DELETE',$user); - if ($result < 0) { $error++; } - // End call triggers - } - - - if (! $error) { $this->db->commit(); @@ -1592,7 +1592,7 @@ class Adherent extends CommonObject global $conf, $langs; if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && $withpictoimg) $withpictoimg=0; - + $result=''; $label=''; $link=''; $linkstart=''; $linkend=''; @@ -1602,7 +1602,7 @@ class Adherent extends CommonObject $label.= Form::showphoto('memberphoto', $this, 80, 0, 0, 'photowithmargin photologintooltip', 'small', 0, 1); $label.= '</div><div style="clear: both;"></div>'; } - + $label.= '<div class="centpercent">'; $label.= '<u>' . $langs->trans("Member") . '</u>'; if (! empty($this->ref)) @@ -1610,7 +1610,7 @@ class Adherent extends CommonObject if (! empty($this->firstname) || ! empty($this->lastname)) $label.= '<br><b>' . $langs->trans('Name') . ':</b> ' . $this->getFullName($langs); $label.='</div>'; - + if ($option == 'card' || $option == 'category') { $link = '<a href="'.DOL_URL_ROOT.'/adherents/card.php?rowid='.$this->id.'"'; @@ -1619,7 +1619,7 @@ class Adherent extends CommonObject { $link = '<a href="'.DOL_URL_ROOT.'/adherents/subscription.php?rowid='.$this->id.'"'; } - + $linkclose=""; if (empty($notooltip)) { @@ -1632,10 +1632,10 @@ class Adherent extends CommonObject $linkclose.= ' title="'.dol_escape_htmltag($label, 1).'"'; $linkclose.= ' class="classfortooltip'.($morecss?' '.$morecss:'').'"'; } - + $link.=$linkclose.'>'; $linkend='</a>'; - + //if ($withpictoimg == -1) $result.='<div class="nowrap">'; $result.=$link; if ($withpictoimg) @@ -1658,7 +1658,7 @@ class Adherent extends CommonObject } $result.=$linkend; //if ($withpictoimg == -1) $result.='</div>'; - + return $result; } @@ -1883,7 +1883,7 @@ class Adherent extends CommonObject $modele = $conf->global->ADHERENT_ADDON_PDF; } } - + $modelpath = "core/modules/member/doc/"; return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref); diff --git a/htdocs/adherents/class/api_members.class.php b/htdocs/adherents/class/api_members.class.php index 3defcabd0596255eb10dc9d69bf227c708564a99..4d13b6347ec52294f6c045a6dd60fa5cc182a65b 100644 --- a/htdocs/adherents/class/api_members.class.php +++ b/htdocs/adherents/class/api_members.class.php @@ -250,11 +250,7 @@ class Members extends DolibarrApi throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - // The Adherent::delete() method uses the global variable $user. - global $user; - $user = DolibarrApiAccess::$user; - - if (! $member->delete($member->id)) { + if (! $member->delete($member->id, DolibarrApiAccess::$user)) { throw new RestException(401,'error when deleting member'); } diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 06de3e09f95afe2984f71963d525226292ea5f0d..949d55020c83a06cda5f9daa6d59adae9f71a822 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -31,13 +31,17 @@ require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -$langs->load("members"); -$langs->load("companies"); +$langs->loadLangs(array("members","companies")); + +$action=GETPOST('action','aZ09'); +$massaction=GETPOST('massaction','alpha'); +$show_files=GETPOST('show_files','int'); +$confirm=GETPOST('confirm','alpha'); +$toselect = GETPOST('toselect', 'array'); // Security check $result=restrictedArea($user,'adherent'); -$action=GETPOST('action','aZ09'); $filter=GETPOST("filter"); $statut=GETPOST("statut"); $search=GETPOST("search"); @@ -53,7 +57,7 @@ $search_country=GETPOST("search_country"); $search_phone=GETPOST("search_phone"); $search_phone_perso=GETPOST("search_phone_perso"); $search_phone_mobile=GETPOST("search_phone_mobile"); -$type=GETPOST("type"); +$search_type=GETPOST("search_type"); $search_email=GETPOST("search_email"); $search_categ = GETPOST("search_categ",'int'); $catid = GETPOST("catid",'int'); @@ -155,7 +159,7 @@ if (empty($reshook)) $search_firstname=""; $search_login=""; $search_company=""; - $type=""; + $search_type=""; $search_email=""; $search_address=""; $search_zip=""; @@ -173,6 +177,14 @@ if (empty($reshook)) $toselect=''; $search_array_options=array(); } + + // Mass actions + $objectclass='Adherent'; + $objectlabel='Members'; + $permtoread = $user->rights->adherent->lire; + $permtodelete = $user->rights->adherent->supprimer; + $uploaddir = $conf->adherent->dir_output; + include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } @@ -193,8 +205,8 @@ $sql.= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.skype, d.birth, d.pu $sql.= " d.fk_adherent_type as type_id, d.morphy, d.statut, d.datec as date_creation, d.tms as date_update,"; $sql.= " t.libelle as type, t.subscription,"; $sql.= " state.code_departement as state_code, state.nom as state_name"; -// Add fields for extrafields -foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; +// Add fields from extrafields +foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); // Add fields from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook @@ -212,7 +224,7 @@ if ($search_categ > 0) $sql.= " AND cm.fk_categorie = ".$db->escape($search_ca if ($search_categ == -2) $sql.= " AND cm.fk_categorie IS NULL"; $sql.= " AND d.entity IN (".getEntity('adherent').")"; if ($sall) $sql.=natural_search(array_keys($fieldstosearchall), $sall); -if ($type > 0) $sql.=" AND t.rowid=".$db->escape($type); +if ($search_type > 0) $sql.=" AND t.rowid=".$db->escape($search_type); if ($statut != '') $sql.=" AND d.statut in (".$db->escape($statut).")"; // Peut valoir un nombre ou liste de nombre separes par virgules if ($search_ref) { @@ -298,10 +310,10 @@ elseif ($action == 'search') $titre=$langs->trans("MembersListQualified"); } -if ($type > 0) +if ($search_type > 0) { $membertype=new AdherentType($db); - $result=$membertype->fetch(GETPOST("type")); + $result=$membertype->fetch(GETPOST("type",'int')); $titre.=" (".$membertype->libelle.")"; } @@ -326,7 +338,7 @@ if ($search_phone != '') $param.= "&search_phone=".urlencode($search_phone); if ($search_phone_perso != '') $param.= "&search_phone_perso=".urlencode($search_phone_perso); if ($search_phone_mobile != '') $param.= "&search_phone_mobile=".urlencode($search_phone_mobile); if ($filter) $param.="&filter=".urlencode($filter); -if ($type > 0) $param.="&type=".urlencode($type); +if ($search_type > 0) $param.="&search_type=".urlencode($search_type); if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); // Add $param from extra fields foreach ($search_array_options as $key => $val) @@ -346,7 +358,7 @@ if ($user->rights->adherent->supprimer) $arrayofmassactions['delete']=$langs->tr //if ($massaction == 'presend' || $massaction == 'createbills') $arrayofmassactions=array(); $massactionbutton=$form->selectMassAction('', $arrayofmassactions); -print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'; +print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">'; if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">'; @@ -403,32 +415,32 @@ if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) } // Ref -if (! empty($arrayfields['d.ref']['checked'])) +if (! empty($arrayfields['d.ref']['checked'])) { print '<td class="liste_titre">'; print '<input class="flat maxwidth50" type="text" name="search_ref" value="'.dol_escape_htmltag($search_ref).'">'; print '</td>'; } -if (! empty($arrayfields['d.firstname']['checked'])) +if (! empty($arrayfields['d.firstname']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_firstname" value="'.dol_escape_htmltag($search_firstname).'"></td>'; } -if (! empty($arrayfields['d.lastname']['checked'])) +if (! empty($arrayfields['d.lastname']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_lastname" value="'.dol_escape_htmltag($search_lastname).'"></td>'; } -if (! empty($arrayfields['d.company']['checked'])) +if (! empty($arrayfields['d.company']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_company" value="'.dol_escape_htmltag($search_company).'"></td>'; } -if (! empty($arrayfields['d.login']['checked'])) +if (! empty($arrayfields['d.login']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_login" value="'.dol_escape_htmltag($search_login).'"></td>'; @@ -440,26 +452,26 @@ if (! empty($arrayfields['d.morphy']['checked'])) print '</td>'; } -if (! empty($arrayfields['t.libelle']['checked'])) +if (! empty($arrayfields['t.libelle']['checked'])) { print '<td class="liste_titre">'; $listetype=$membertypestatic->liste_array(); - print $form->selectarray("type", $listetype, $type, 1, 0, 0, '', 0, 32); + print $form->selectarray("search_type", $listetype, $type, 1, 0, 0, '', 0, 32); print '</td>'; } -if (! empty($arrayfields['d.address']['checked'])) +if (! empty($arrayfields['d.address']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_address" value="'.$search_address.'"></td>'; } -if (! empty($arrayfields['d.zip']['checked'])) +if (! empty($arrayfields['d.zip']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_zip" value="'.$search_zip.'"></td>'; } -if (! empty($arrayfields['d.town']['checked'])) +if (! empty($arrayfields['d.town']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_town" value="'.$search_town.'"></td>'; @@ -479,31 +491,31 @@ if (! empty($arrayfields['country.code_iso']['checked'])) print '</td>'; } // Phone pro -if (! empty($arrayfields['d.phone']['checked'])) +if (! empty($arrayfields['d.phone']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_phone" value="'.$search_phone.'"></td>'; } // Phone perso -if (! empty($arrayfields['d.phone_perso']['checked'])) +if (! empty($arrayfields['d.phone_perso']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_phone_perso" value="'.$search_phone_perso.'"></td>'; } // Phone mobile -if (! empty($arrayfields['d.phone_mobile']['checked'])) +if (! empty($arrayfields['d.phone_mobile']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_phone_mobile" value="'.$search_phone_mobile.'"></td>'; } // Email -if (! empty($arrayfields['d.email']['checked'])) +if (! empty($arrayfields['d.email']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat maxwidth50" type="text" name="search_email" value="'.$search_email.'"></td>'; } -if (! empty($arrayfields['d.datefin']['checked'])) +if (! empty($arrayfields['d.datefin']['checked'])) { print '<td class="liste_titre" align="left">'; print '</td>'; @@ -626,7 +638,7 @@ while ($i < min($num, $limit)) $memberstatic->datefin= $datefin; $memberstatic->socid = $obj->fk_soc; $memberstatic->photo = $obj->photo; - + if (! empty($obj->fk_soc)) { $memberstatic->fetch_thirdparty(); $companyname=$memberstatic->thirdparty->name; @@ -635,52 +647,52 @@ while ($i < min($num, $limit)) } print '<tr class="oddeven">'; - + if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { print '<td align="center">'.($i+1).'</td>'; } // Ref - if (! empty($arrayfields['d.ref']['checked'])) + if (! empty($arrayfields['d.ref']['checked'])) { print "<td>"; print $memberstatic->getNomUrl(-1, 0, 'card', 'ref'); print "</td>\n"; - } + } // Firstname - if (! empty($arrayfields['d.firstname']['checked'])) + if (! empty($arrayfields['d.firstname']['checked'])) { print "<td>"; print $obj->firstname; print "</td>\n"; } // Lastname - if (! empty($arrayfields['d.lastname']['checked'])) + if (! empty($arrayfields['d.lastname']['checked'])) { print "<td>"; print $obj->lastname; print "</td>\n"; } // Company - if (! empty($arrayfields['d.company']['checked'])) + if (! empty($arrayfields['d.company']['checked'])) { print "<td>"; print $companyname; print "</td>\n"; } // Login - if (! empty($arrayfields['d.login']['checked'])) + if (! empty($arrayfields['d.login']['checked'])) { print "<td>".$obj->login."</td>\n"; } // Moral/Physique - if (! empty($arrayfields['d.morphy']['checked'])) + if (! empty($arrayfields['d.morphy']['checked'])) { print "<td>".$memberstatic->getmorphylib($obj->morphy)."</td>\n"; } // Type label - if (! empty($arrayfields['t.libelle']['checked'])) + if (! empty($arrayfields['t.libelle']['checked'])) { $membertypestatic->id=$obj->type_id; $membertypestatic->libelle=$obj->type; @@ -727,7 +739,7 @@ while ($i < min($num, $limit)) if (! $i) $totalarray['nbfield']++; } // Phone pro - if (! empty($arrayfields['d.phone']['checked'])) + if (! empty($arrayfields['d.phone']['checked'])) { print '<td class="nocellnopadd">'; print $obj->phone; @@ -735,7 +747,7 @@ while ($i < min($num, $limit)) if (! $i) $totalarray['nbfield']++; } // Phone perso - if (! empty($arrayfields['d.phone_perso']['checked'])) + if (! empty($arrayfields['d.phone_perso']['checked'])) { print '<td class="nocellnopadd">'; print $obj->phone_perso; @@ -743,7 +755,7 @@ while ($i < min($num, $limit)) if (! $i) $totalarray['nbfield']++; } // Phone mobile - if (! empty($arrayfields['d.phone_mobile']['checked'])) + if (! empty($arrayfields['d.phone_mobile']['checked'])) { print '<td class="nocellnopadd">'; print $obj->phone_mobile; @@ -756,7 +768,7 @@ while ($i < min($num, $limit)) print "<td>".dol_print_email($obj->email,0,0,1)."</td>\n"; } // End of subscription date - $datefin=$db->jdate($obj->datefin); + $datefin=$db->jdate($obj->datefin); if (! empty($arrayfields['d.datefin']['checked'])) { if ($datefin) @@ -832,22 +844,15 @@ while ($i < min($num, $limit)) } // Action column print '<td align="center">'; - if ($user->rights->adherent->creer) - { - print "<a href=\"card.php?rowid=".$obj->rowid."&action=edit&backtopage=1\">".img_edit()."</a>"; - } - print ' '; - if ($user->rights->adherent->supprimer && $obj->statut == -1) - { - print "<a href=\"card.php?rowid=".$obj->rowid."&action=delete&backtopage=1\">".img_picto($langs->trans("Delete"),'disable.png')."</a>"; - } - if ($user->rights->adherent->supprimer && $obj->statut == 1) - { - print "<a href=\"card.php?rowid=".$obj->rowid."&action=resign&backtopage=1\">".img_picto($langs->trans("Resiliate"),'disable.png')."</a>"; - } - print "</td>"; - if (! $i) $totalarray['nbfield']++; - + if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + { + $selected=0; + if (in_array($obj->rowid, $arrayofselected)) $selected=1; + print '<input id="cb'.$obj->rowid.'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$obj->rowid.'"'.($selected?' checked="checked"':'').'>'; + } + print '</td>'; + if (! $i) $totalarray['nbfield']++; + print "</tr>\n"; $i++; } diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index dbfeafc8f9453e027cd5b30465d7526b4c166ade..2f8810333f0e760ee3b8125bd93545ecee803590 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -45,7 +45,7 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $langs->loadLangs(array("orders",'sendings','deliveries','companies','compta','bills')); -$action=GETPOST('action','alpha'); +$action=GETPOST('action','aZ09'); $massaction=GETPOST('massaction','alpha'); $show_files=GETPOST('show_files','int'); $confirm=GETPOST('confirm','alpha'); @@ -160,7 +160,7 @@ if (empty($reshook)) { // Selection of new fields 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 tests are required to be compatible with all browsers { @@ -202,51 +202,51 @@ if (empty($reshook)) // TODO Move this into mass action include if ($massaction == 'confirm_createbills') { - + $orders = GETPOST('toselect'); $createbills_onebythird = GETPOST('createbills_onebythird', 'int'); $validate_invoices = GETPOST('valdate_invoices', 'int'); - + $TFact = array(); $TFactThird = array(); - + $nb_bills_created = 0; - + $db->begin(); - + foreach($orders as $id_order) { - + $cmd = new Commande($db); if($cmd->fetch($id_order) <= 0) continue; - + $object = new Facture($db); if(!empty($createbills_onebythird) && !empty($TFactThird[$cmd->socid])) $object = $TFactThird[$cmd->socid]; // If option "one bill per third" is set, we use already created order. else { - + $object->socid = $cmd->socid; $object->type = Facture::TYPE_STANDARD; $object->cond_reglement_id = $cmd->cond_reglement_id; $object->mode_reglement_id = $cmd->mode_reglement_id; $object->fk_project = $cmd->fk_project; - + $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']); if (empty($datefacture)) { $datefacture = dol_mktime(date("h"), date("M"), 0, date("m"), date("d"), date("Y")); } - + $object->date = $datefacture; $object->origin = 'commande'; $object->origin_id = $id_order; - + $res = $object->create($user); - + if($res > 0) $nb_bills_created++; - + } - + if($object->id > 0) { - + $db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_element ("; $sql.= "fk_source"; @@ -259,7 +259,7 @@ if (empty($reshook)) $sql.= ", ".$object->id; $sql.= ", '".$object->element."'"; $sql.= ")"; - + if ($db->query($sql)) { $db->commit(); @@ -268,17 +268,17 @@ if (empty($reshook)) { $db->rollback(); } - + $lines = $cmd->lines; if (empty($lines) && method_exists($cmd, 'fetch_lines')) { $cmd->fetch_lines(); $lines = $cmd->lines; } - + $fk_parent_line=0; $num=count($lines); - + for ($i=0;$i<$num;$i++) { $desc=($lines[$i]->desc?$lines[$i]->desc:$lines[$i]->libelle); @@ -367,43 +367,43 @@ if (empty($reshook)) $fk_parent_line = $result; } } - } - + } + } - + $cmd->classifyBilled($user); - + if(!empty($createbills_onebythird) && empty($TFactThird[$cmd->socid])) $TFactThird[$cmd->socid] = $object; else $TFact[$object->id] = $object; } - + // Build doc with all invoices $TAllFact = empty($createbills_onebythird) ? $TFact : $TFactThird; $toselect = array(); - + if(!empty($validate_invoices)) { - + $massaction = $action = 'builddoc'; - + foreach($TAllFact as &$object) { $object->validate($user); $toselect[] = $object->id; // For builddoc action - + // Fac builddoc $upload_dir = $conf->facture->dir_output; $permissioncreate=$user->rights->facture->creer; include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php'; } - + $objectclass='Facture'; $objectlabel='Invoice'; $permtoread = $user->rights->facture->lire; $permtodelete = $user->rights->facture->supprimer; $uploaddir = $conf->facture->dir_output; include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; - + } - + if (! $error) { $db->commit(); @@ -418,7 +418,7 @@ if (empty($reshook)) setEventMessages($object->error, $object->errors, 'errors'); $error++; } - } + } } @@ -596,9 +596,9 @@ if ($resql) $title.=' - '.$langs->trans('StatusOrderValidated').', '.(empty($conf->expedition->enabled)?'':$langs->trans("StatusOrderSent").', ').$langs->trans('StatusOrderToBill'); $num = $db->num_rows($resql); - + $arrayofselected=is_array($toselect)?$toselect:array(); - + $param=''; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; @@ -629,7 +629,7 @@ if ($resql) $tmpkey=preg_replace('/search_options_/','',$key); if ($val != '') $param.='&search_options_'.$tmpkey.'='.urlencode($val); } - + // List of mass actions available $arrayofmassactions = array( 'presend'=>$langs->trans("SendByMail"), @@ -653,12 +653,12 @@ if ($resql) print '<input type="hidden" name="viewstatut" value="'.$viewstatut.'">'; print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_commercial.png', 0, '', '', $limit); - + // TODO Move this into an invluce if ($massaction == 'presend') { $langs->load("mails"); - + if (! GETPOST('cancel')) { $objecttmp=new Commande($db); @@ -677,14 +677,14 @@ if ($resql) } } } - + print '<input type="hidden" name="massaction" value="confirm_presend">'; - + dol_fiche_head(null, '', ''); - + $topicmail="SendOrderRef"; $modelmail="order_send"; - + // Cree l'objet formulaire mail include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; $formmail = new FormMail($db); @@ -737,23 +737,23 @@ if ($resql) $formmail->substit['__REFCLIENT__']='__REFCLIENT__'; // We want to keep the tag $formmail->substit['__PERSONALIZED__']=''; $formmail->substit['__CONTACTCIVNAME__']=''; - + // Tableau des parametres complementaires du post $formmail->param['action']=$action; $formmail->param['models']=$modelmail; $formmail->param['models_id']=GETPOST('modelmailselected','int'); $formmail->param['id']=join(',',$arrayofselected); //$formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id; - + print $formmail->get_form(); - + dol_fiche_end(); } elseif ($massaction == 'createbills') { //var_dump($_REQUEST); print '<input type="hidden" name="massaction" value="confirm_createbills">'; - + print '<table class="border" width="100%" >'; print '<tr>'; print '<td class="titlefieldmiddle">'; @@ -780,7 +780,7 @@ if ($resql) print '</td>'; print '</tr>'; print '</table>'; - + print '<br>'; print '<div class="center">'; print '<input type="submit" class="button" id="createbills" name="createbills" value="'.$langs->trans('CreateInvoiceForThisCustomer').'"> '; @@ -788,13 +788,13 @@ if ($resql) print '</div>'; print '<br>'; } - + if ($sall) { foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); print $langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall); } - + $moreforfilter=''; // If the user can view prospects other than his' @@ -828,7 +828,7 @@ if ($resql) $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 '<div class="liste_titre liste_titre_bydiv centpercent">'; @@ -839,27 +839,27 @@ if ($resql) $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1); - + print '<div class="div-table-responsive">'; print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n"; print '<tr class="liste_titre_filter">'; // Ref - if (! empty($arrayfields['c.ref']['checked'])) + if (! empty($arrayfields['c.ref']['checked'])) { print '<td class="liste_titre">'; print '<input class="flat" size="6" type="text" name="search_ref" value="'.$search_ref.'">'; print '</td>'; } // Ref customer - if (! empty($arrayfields['c.ref_client']['checked'])) + if (! empty($arrayfields['c.ref_client']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat" type="text" size="6" name="search_ref_customer" value="'.$search_ref_customer.'">'; print '</td>'; } // Thirpdarty - if (! empty($arrayfields['s.nom']['checked'])) + if (! empty($arrayfields['s.nom']['checked'])) { print '<td class="liste_titre" align="left">'; print '<input class="flat" type="text" name="search_company" value="'.$search_company.'">'; @@ -899,7 +899,7 @@ if ($resql) $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); print '</td>'; } - if (! empty($arrayfields['c.date_delivery']['checked'])) + if (! empty($arrayfields['c.date_delivery']['checked'])) { print '<td class="liste_titre" align="center">'; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="deliveryday" value="'.$deliveryday.'">'; @@ -972,10 +972,10 @@ if ($resql) { print '<td class="liste_titre maxwidthonsmartphone" align="right">'; $liststatus=array( - Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraftShort"), - Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"), - Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSentShort"), - Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"), + Commande::STATUS_DRAFT=>$langs->trans("StatusOrderDraftShort"), + Commande::STATUS_VALIDATED=>$langs->trans("StatusOrderValidated"), + Commande::STATUS_ACCEPTED=>$langs->trans("StatusOrderSentShort"), + Commande::STATUS_CLOSED=>$langs->trans("StatusOrderDelivered"), Commande::STATUS_CANCELED=>$langs->trans("StatusOrderCanceledShort") ); print $form->selectarray('viewstatut', $liststatus, $viewstatut, -4); @@ -993,7 +993,7 @@ if ($resql) $searchpicto=$form->showFilterButtons(); print $searchpicto; print '</td>'; - + print "</tr>\n"; // Fields title @@ -1014,9 +1014,9 @@ if ($resql) // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { - foreach($extrafields->attribute_label as $key => $val) + foreach($extrafields->attribute_label as $key => $val) { - if (! empty($arrayfields["ef.".$key]['checked'])) + if (! empty($arrayfields["ef.".$key]['checked'])) { $align=$extrafields->getAlignFlag($key); print_liste_field_titre($langs->trans($extralabels[$key]),$_SERVER["PHP_SELF"],"ef.".$key,"",$param,($align?'align="'.$align.'"':''),$sortfield,$sortorder); @@ -1033,20 +1033,20 @@ if ($resql) if (! empty($arrayfields['c.facture']['checked'])) print_liste_field_titre($arrayfields['c.facture']['label'],$_SERVER["PHP_SELF"],'c.facture','',$param,'align="center"',$sortfield,$sortorder,''); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch '); print '</tr>'."\n"; - + $total=0; $subtotal=0; $productstat_cache=array(); - + $generic_commande = new Commande($db); $generic_product = new Product($db); - + $i=0; $totalarray=array(); while ($i < min($num,$limit)) { $obj = $db->fetch_object($resql); - + print '<tr class="oddeven">'; $notshippable=0; @@ -1054,7 +1054,7 @@ if ($resql) $text_info=''; $text_warning=''; $nbprod=0; - + // Ref if (! empty($arrayfields['c.ref']['checked'])) { @@ -1070,12 +1070,12 @@ if ($resql) $generic_commande->total_ttc = $obj->total_ttc; $generic_commande->lines=array(); $generic_commande->getLinesArray(); - + print '<table class="nobordernopadding"><tr class="nocellnopadd">'; print '<td class="nobordernopadding nowrap">'; print $generic_commande->getNomUrl(1,($viewstatut != 2?0:$obj->fk_statut)); print '</td>'; - + // Show shippable Icon (create subloop, so may be slow) if ($conf->stock->enabled) { @@ -1083,7 +1083,7 @@ if ($resql) if (($obj->fk_statut > 0) && ($obj->fk_statut < 3)) { $numlines = count($generic_commande->lines); // Loop on each line of order - for ($lig=0; $lig < $numlines; $lig++) + for ($lig=0; $lig < $numlines; $lig++) { if ($generic_commande->lines[$lig]->product_type == 0 && $generic_commande->lines[$lig]->fk_product > 0) // If line is a product and not a service { @@ -1107,8 +1107,8 @@ if ($resql) $text_info .= ' - '.$langs->trans("Stock").': '.$generic_product->stock_reel; $text_info .= ' - '.$langs->trans("VirtualStock").': '.$generic_product->stock_theorique; $text_info .= '<br>'; - - if ($generic_commande->lines[$lig]->qty > $generic_product->stock_reel) + + if ($generic_commande->lines[$lig]->qty > $generic_product->stock_reel) { $notshippable++; } @@ -1168,7 +1168,7 @@ if ($resql) $text_info = $langs->trans('NonShippable').'<br>'.$text_info; } } - + print '<td>'; if ($nbprod) { @@ -1179,7 +1179,7 @@ if ($resql) } print '</td>'; } - + // Warning late icon and note print '<td class="nobordernopadding nowrap">'; if ($generic_commande->hasDelay()) { @@ -1192,7 +1192,7 @@ if ($resql) print '</span>'; } print '</td>'; - + print '<td width="16" align="right" class="nobordernopadding hideonsmartphone">'; $filename=dol_sanitizeFileName($obj->ref); $filedir=$conf->commande->dir_output . '/' . dol_sanitizeFileName($obj->ref); @@ -1200,11 +1200,11 @@ if ($resql) print $formfile->getDocumentsLink($generic_commande->element, $filename, $filedir); print '</td>'; print '</tr></table>'; - + print '</td>'; if (! $i) $totalarray['nbfield']++; } - + // Ref customer if (! empty($arrayfields['c.ref_client']['checked'])) { @@ -1222,7 +1222,7 @@ if ($resql) { print '<td class="tdoverflowmax200">'; print $companystatic->getNomUrl(1,'customer'); - + // If module invoices enabled and user with invoice creation permissions if (! empty($conf->facture->enabled) && ! empty($conf->global->ORDER_BILLING_ALL_CUSTOMER)) { @@ -1278,7 +1278,7 @@ if ($resql) print '</td>'; if (! $i) $totalarray['nbfield']++; } - + // Order date if (! empty($arrayfields['c.date_commande']['checked'])) { @@ -1319,7 +1319,7 @@ if ($resql) if (! $i) $totalarray['totalttcfield']=$totalarray['nbfield']; $totalarray['totalttc'] += $obj->total_ttc; } - + // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -1370,7 +1370,7 @@ if ($resql) print '<td align="center">'.yn($obj->billed).'</td>'; if (! $i) $totalarray['nbfield']++; } - + // Action column print '<td class="nowrap" align="center">'; if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined @@ -1381,9 +1381,9 @@ if ($resql) } print '</td>'; if (! $i) $totalarray['nbfield']++; - + print "</tr>\n"; - + $total+=$obj->total_ht; $subtotal+=$obj->total_ht; $i++; @@ -1416,14 +1416,14 @@ if ($resql) } $db->free($resql); - + $parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql); $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; - + print '</table>'."\n"; print '</div>'; - + print '</form>'."\n"; if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) @@ -1433,18 +1433,18 @@ if ($resql) */ $urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; $urlsource.=str_replace('&','&',$param); - + $filedir=$diroutputmassaction; $genallowed=$user->rights->commande->lire; $delallowed=$user->rights->commande->supprimer; - + print $formfile->showdocuments('massfilesarea_orders','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,''); } else { print '<br><a name="show_files"></a><a href="'.$_SERVER["PHP_SELF"].'?show_files=1'.$param.'#show_files">'.$langs->trans("ShowTempMassFilesArea").'</a>'; } - + } else { diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index fde828fd6d498af48327111ebe4a2b3d6d591eef..20b3d155a27299b039153778e227d7b27f335958 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -536,7 +536,7 @@ if (! $error && $massaction == 'delete' && $permtodelete) $result=$objecttmp->fetch($toselectid); if ($result > 0) { - if ($objecttmp->element == 'societe') $result = $objecttmp->delete($objecttmp->id, $user, 1); + if (in_array($objecttmp->element, array('societe','member'))) $result = $objecttmp->delete($objecttmp->id, $user, 1); else $result = $objecttmp->delete($user); if ($result <= 0) {