';
+print '';
+
+
+if ($youuselaststable)
+{
+ print ' ';
+ print ' ';
+
+ $tmp=versiondolibarrarray();
+ if ((empty($tmp[2]) && (strpos($tmp[1], '0') === 0)) || (strpos($tmp[2], '0') === 0))
+ {
+ print $langs->trans("TitleExampleForMajorRelease").': ';
+ print '';
+ }
+ else
+ {
+ print $langs->trans("TitleExampleForMaintenanceRelease").': ';
+ print '';
+ }
+}
+
llxFooter();
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index 40844da3d56..d43314a8816 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -1145,7 +1145,7 @@ class Commande extends CommonOrder
* @param int $fk_fournprice Id supplier price
* @param int $pa_ht Buying price (without tax)
* @param string $label Label
- * @param array $array_options extrafields array
+ * @param array $array_options extrafields array. Example array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...)
* @param string $fk_unit Code of the unit to use. Null to use the default one
* @return int >0 if OK, <0 if KO
*
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 5105f8196d1..a178abae47c 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -2347,8 +2347,8 @@ if ($action == 'create')
}
print '
' . $langs->trans($newclassname) . '
' . $objectsrc->getNomUrl(1);
- //We check if Origin document has already an invoice attached to it
- $objectsrc->fetchObjectLinked($originid,'','','facture');
+ // We check if Origin document (id and type is known) has already at least one invoice attached to it
+ $objectsrc->fetchObjectLinked($originid,$origin,'','facture');
$cntinvoice=count($objectsrc->linkedObjects['facture']);
if ($cntinvoice>=1)
{
diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php
index 1783c4794b5..bbb00e2ce29 100644
--- a/htdocs/core/ajax/selectsearchbox.php
+++ b/htdocs/core/ajax/selectsearchbox.php
@@ -37,12 +37,69 @@ include_once DOL_DOCUMENT_ROOT.'/core/lib/json.lib.php';
$search_boxvalue=GETPOST('q');
-$arrayresult=array('a'=>'aaaa', 'b'=>'bbbb');
+$arrayresult=array();
-if ($conf->projet->enabled)
+// Define $searchform
+if ((( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)) && ! empty($conf->global->MAIN_SEARCHFORM_SOCIETE) && $user->rights->societe->lire)
{
- $arrayresult['searchintoproject']=$langs->trans("SearchIntoProject", $search_boxvalue);
+ $langs->load("companies");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/societe/list.php', DOL_URL_ROOT.'/societe/list.php', $langs->trans("ThirdParties"), 'soc', 'sall', 'T', 'searchleftt', img_object('','company'));
+ $arrayresult['searchintothirdparty']=$langs->trans("SearchIntoThirdparties", $search_boxvalue);
}
+
+if (! empty($conf->societe->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_CONTACT) && $user->rights->societe->lire)
+{
+ $langs->load("companies");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/contact/list.php', DOL_URL_ROOT.'/contact/list.php', $langs->trans("Contacts"), 'contact', 'sall', 'A', 'searchleftc', img_object('','contact'));
+ $arrayresult['searchintocontact']=$langs->trans("SearchIntoContacts", $search_boxvalue);
+}
+
+if (((! empty($conf->product->enabled) && $user->rights->produit->lire) || (! empty($conf->service->enabled) && $user->rights->service->lire))
+&& ! empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE))
+{
+ $langs->load("products");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/product/list.php', DOL_URL_ROOT.'/product/list.php', $langs->trans("Products")."/".$langs->trans("Services"), 'products', 'sall', 'P', 'searchleftp', img_object('','product'));
+ $arrayresult['searchintoproduct']=$langs->trans("SearchIntoProductsOrServices", $search_boxvalue);
+}
+
+/*if (((! empty($conf->product->enabled) && $user->rights->produit->lire) || (! empty($conf->service->enabled) && $user->rights->service->lire)) && ! empty($conf->fournisseur->enabled)
+&& ! empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER))
+{
+ $langs->load("products");
+ $searchform.=printSearchForm(DOL_URL_ROOT.'/fourn/product/list.php', DOL_URL_ROOT.'/fourn/product/list.php', $langs->trans("SupplierRef"), 'products', 'srefsupplier', '', 'searchlefts', img_object('','product'));
+}*/
+
+if (! empty($conf->adherent->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_ADHERENT) && $user->rights->adherent->lire)
+{
+ $langs->load("members");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/adherents/list.php', DOL_URL_ROOT.'/adherents/list.php', $langs->trans("Members"), 'member', 'sall', 'M', 'searchleftm', img_object('','user'));
+ $arrayresult['searchintomember']=$langs->trans("SearchIntoMembers", $search_boxvalue);
+}
+
+if (! empty($conf->projet->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_PROJECT) && $user->rights->projet->lire)
+{
+ $langs->load("projects");
+ //$searchform.=printSearchForm(DOL_URL_ROOT.'/projet/list.php', DOL_URL_ROOT.'/projet/list.php', $langs->trans("Projects"), 'project', 'search_all', 'Q', 'searchleftproj', img_object('','projectpub'));
+ $arrayresult['searchintoprojects']=$langs->trans("SearchIntoProjects", $search_boxvalue);
+}
+
+// Execute hook printSearchForm
+$parameters=array();
+$reshook=$hookmanager->executeHooks('printSearchForm',$parameters); // Note that $action and $object may have been modified by some hooks
+if (empty($reshook))
+{
+ $searchform.=$hookmanager->resPrint;
+}
+else $searchform=$hookmanager->resPrint;
+
+
+
+
+
+
+
+
+
print json_encode($arrayresult);
if (is_object($db)) $db->close();
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 716d705123e..d5dac206e15 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -2261,13 +2261,18 @@ abstract class CommonObject
/**
* Fetch array of objects linked to current object. Links are loaded into this->linkedObjects array and this->linkedObjectsIds
- *
- * @param int $sourceid Object source id
- * @param string $sourcetype Object source type
- * @param int $targetid Object target id
- * @param string $targettype Object target type
+ * Possible usage for parameters:
+ * - all parameters empty -> we look all link to current object (current object can be source or target)
+ * - one couple id+type is provided -> this will set $justsource or $justtarget
+ * - one couple id+type is provided and other type is provided -> this will set $justsource or $justtarget + criteria on other type
+ *
+ *
+ * @param int $sourceid Object source id (if not defined, id of object)
+ * @param string $sourcetype Object source type (if not defined, element name of object)
+ * @param int $targetid Object target id (if not defined, id of object)
+ * @param string $targettype Object target type (if not defined, elemennt name of object)
* @param string $clause 'OR' or 'AND' clause used when both source id and target id are provided
- * @param int $alsosametype 0=Return only links to different object than source. 1=Include also link to objects of same type.
+ * @param int $alsosametype 0=Return only links to object that differs from source. 1=Include also link to objects of same type.
* @return void
* @see add_object_linked, updateObjectLinked, deleteObjectLinked
*/
@@ -2285,12 +2290,12 @@ abstract class CommonObject
if (! empty($sourceid) && ! empty($sourcetype) && empty($targetid))
{
- $justsource=true;
+ $justsource=true; // the source (id and type) is a search criteria
if (! empty($targettype)) $withtargettype=true;
}
if (! empty($targetid) && ! empty($targettype) && empty($sourceid))
{
- $justtarget=true;
+ $justtarget=true; // the target (id and type) is a search criteria
if (! empty($sourcetype)) $withsourcetype=true;
}
@@ -2339,13 +2344,27 @@ abstract class CommonObject
while ($i < $num)
{
$obj = $this->db->fetch_object($resql);
- if ($obj->fk_source == $sourceid)
+ if ($justsource || $justtarget)
{
- $this->linkedObjectsIds[$obj->targettype][$obj->rowid]=$obj->fk_target;
+ if ($justsource)
+ {
+ $this->linkedObjectsIds[$obj->targettype][$obj->rowid]=$obj->fk_target;
+ }
+ else if ($justtarget)
+ {
+ $this->linkedObjectsIds[$obj->sourcetype][$obj->rowid]=$obj->fk_source;
+ }
}
- if ($obj->fk_target == $targetid)
+ else
{
- $this->linkedObjectsIds[$obj->sourcetype][$obj->rowid]=$obj->fk_source;
+ if ($obj->fk_source == $sourceid && $obj->sourcetype == $sourcetype)
+ {
+ $this->linkedObjectsIds[$obj->targettype][$obj->rowid]=$obj->fk_target;
+ }
+ if ($obj->fk_target == $targetid && $obj->targettype == $targettype)
+ {
+ $this->linkedObjectsIds[$obj->sourcetype][$obj->rowid]=$obj->fk_source;
+ }
}
$i++;
}
@@ -3016,60 +3035,60 @@ abstract class CommonObject
print '
';
- if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) print '
';
+ if (! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) print '
';
// Description
- print '
'.$langs->trans('Description').'
';
+ print '
'.$langs->trans('Description').'
';
if ($this->element == 'askpricesupplier')
{
- print '
info_bits & 2) != 2) && $line->special_code != 3) {
// I comment this because it shows info even when not required
// for example always visible on invoice but must be visible only if stock module on and stock decrease option is on invoice validation and status is not validated
@@ -148,7 +148,7 @@ if (empty($usemargins)) $usemargins=0;
global->PRODUCT_USE_UNITS)
{
- print '
'.$objectsrc->getNomUrl(1);
- //We check if Origin document has already an invoice attached to it
- $objectsrc->fetchObjectLinked($originid,'','','invoice_supplier');
+ // We check if Origin document (id and type is known) has already at least one invoice attached to it
+ $objectsrc->fetchObjectLinked($originid,$origin,'','invoice_supplier');
$cntinvoice=count($objectsrc->linkedObjects['invoice_supplier']);
if ($cntinvoice>=1)
{
diff --git a/htdocs/fourn/list.php b/htdocs/fourn/list.php
deleted file mode 100644
index 8fb33850919..00000000000
--- a/htdocs/fourn/list.php
+++ /dev/null
@@ -1,333 +0,0 @@
-
- * Copyright (C) 2004-2015 Laurent Destailleur
- * Copyright (C) 2005-2012 Regis Houssin
- * Copyright (C) 2011 Philippe Grand
- * Copyright (C) 2013 Cédric Salvador
- * Copyright (C) 2015 Raphaël Doursenaud
- * Copyright (C) 2015 Florian Henry
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-/**
- * \file htdocs/fourn/list.php
- * \ingroup fournisseur
- * \brief Home page of supplier area
- */
-
-require '../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
-
-$langs->load("suppliers");
-$langs->load("orders");
-$langs->load("companies");
-
-$socname = GETPOST("socname");
-$search_name = GETPOST("search_name");
-$search_zipcode = GETPOST("search_zipcode");
-$search_town = GETPOST("search_town");
-$search_supplier_code = GETPOST("search_supplier_code");
-$search_supplier_accounting = GETPOST("search_supplier_accounting");
-$search_datec = GETPOST("search_datec");
-$search_categ = GETPOST('search_categ','int');
-$search_status = GETPOST("search_status",'int');
-$catid = GETPOST("catid",'int');
-$search_country = GETPOST("search_country",'int');
-$search_type_thirdparty = GETPOST("search_type_thirdparty",'int');
-$optioncss = GETPOST('optioncss','alpha');
-
-// Security check
-$socid = GETPOST('socid','int');
-if ($user->societe_id) $socid=$user->societe_id;
-$result = restrictedArea($user,'societe',$socid,'');
-
-$page = GETPOST('page','int');
-$sortorder = GETPOST('sortorder','alpha');
-$sortfield = GETPOST('sortfield','alpha');
-if ($page == -1) { $page = 0 ; }
-$offset = $conf->liste_limit * $page ;
-$pageprev = $page - 1;
-$pagenext = $page + 1;
-if (! $sortorder) $sortorder="ASC";
-if (! $sortfield) $sortfield="nom";
-
-// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
-$hookmanager->initHooks(array('supplierlist'));
-$extrafields = new ExtraFields($db);
-
-if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
-{
- $socname="";
- $search_name="";
- $search_zipcode="";
- $search_town="";
- $search_supplier_code="";
- $search_supplier_accounting="";
- $search_datec="";
- $search_categ="";
- $search_status='';
- $catid="";
- $search_country="";
- $search_type_thirdparty="";
-}
-
-if ($search_status=='') $search_status=1; // always display activ customer first
-
-$extrafields->fetch_name_optionals_label('thirdparty');
-
-
-/*
- * Actions
- */
-
-$parameters=array();
-$reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks
-if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
-
-
-/*
- * View
- */
-
-$form=new Form($db);
-$htmlother=new FormOther($db);
-$thirdpartystatic=new Societe($db);
-$formcompany=new FormCompany($db);
-
-$help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas';
-llxHeader('',$langs->trans("ThirdParty"),$help_url);
-
-$sql = "SELECT s.rowid as socid, s.nom as name, s.name_alias, s.zip, s.town, s.datec, st.libelle as stcomm, s.prefix_comm, s.status as status, ";
-$sql.= "code_fournisseur, code_compta_fournisseur";
-$sql.= ",s.fk_pays";
-$sql.= ",typent.code as typent_code";
-if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user ";
-// Add fields for extrafields
-foreach ($extrafields->attribute_list as $key => $val) $sql.=",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
-$sql.=$hookmanager->resPrint;
-$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
-$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as ef ON ef.fk_object = s.rowid";
-$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays) ";
-$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent) ";
-if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_fournisseur as cf ON s.rowid = cf.fk_soc"; // We need this table joined to the select in order to filter by categ
-$sql.= ", ".MAIN_DB_PREFIX."c_stcomm as st";
-if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
-$sql.= " WHERE s.fk_stcomm = st.id AND s.fournisseur = 1";
-$sql.= " AND s.entity IN (".getEntity('societe', 1).")";
-if (!$user->rights->societe->client->voir && !$socid) $sql .= " AND s.rowid = sc.fk_soc";
-if ($socid) $sql .= " AND s.rowid = ".$socid;
-if ($socname) {
- $sql .= natural_search('s.nom', $socname);
- $sortfield = "s.nom";
- $sortorder = "ASC";
-}
-if ($search_name) $sql .= natural_search(array('s.nom', 's.name_alias'), $search_name);
-if ($search_zipcode) $sql .= " AND s.zip LIKE '".$db->escape($search_zipcode)."%'";
-if ($search_town) $sql .= natural_search('s.town', $search_town);
-if ($search_supplier_code) $sql .= " AND s.code_fournisseur LIKE '%".$db->escape($search_supplier_code)."%'";
-if ($search_supplier_accounting) $sql .= " AND s.code_compta_fournisseur LIKE '%".$db->escape($search_supplier_accounting)."%'";
-if ($search_datec) $sql .= " AND s.datec LIKE '%".$db->escape($search_datec)."%'";
-if ($search_status!='') $sql.= " AND s.status = ".$db->escape($search_status);
-if ($catid > 0) $sql.= " AND cf.fk_categorie = ".$catid;
-if ($catid == -2) $sql.= " AND cf.fk_categorie IS NULL";
-if ($search_categ > 0) $sql.= " AND cf.fk_categorie = ".$search_categ;
-if ($search_categ == -2) $sql.= " AND cf.fk_categorie IS NULL";
-if ($search_country) $sql .= " AND s.fk_pays IN (".$search_country.')';
-if ($search_type_thirdparty) $sql .= " AND s.fk_typent IN (".$search_type_thirdparty.')';
-// Add where from hooks
-$parameters=array();
-$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
-$sql.=$hookmanager->resPrint;
-
-// Count total nb of records
-$nbtotalofrecords = 0;
-if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
-{
- $result = $db->query($sql);
- $nbtotalofrecords = $db->num_rows($result);
-}
-$sql.= $db->order($sortfield,$sortorder);
-$sql.= $db->plimit($conf->liste_limit+1, $offset);
-//print $sql;
-
-dol_syslog('fourn/list.php:', LOG_DEBUG);
-$resql = $db->query($sql);
-if ($resql)
-{
- $num = $db->num_rows($resql);
- $i = 0;
-
- $param = "&search_name=".htmlspecialchars($search_name);
- $param.="&search_supplier_code=".htmlspecialchars($search_supplier_code);
- $param.="&search_zipcode=".htmlspecialchars($search_zipcode);
- $param.="&search_town=".htmlspecialchars($search_town);
- if ($search_categ != '') $param.='&search_categ='.htmlspecialchars($search_categ);
- if ($search_status != '') $param.='&search_status='.htmlspecialchars($search_status);
- if ($search_country != '') $param.='&search_country='.htmlspecialchars($search_country);
- if ($search_type_thirdparty != '') $param.='&search_type_thirdparty='.htmlspecialchars($search_type_thirdparty);
- if ($optioncss != '') $param.='&optioncss='.$optioncss;
-
- print_barre_liste($langs->trans("ListOfSuppliers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_companies');
-
- print '\n";
- $db->free($resql);
-
- $parameters=array('sql' => $sql);
- $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook
- print $hookmanager->resPrint;
-}
-else
-{
- dol_print_error($db);
-}
-
-$db->close();
-
-llxFooter();
diff --git a/htdocs/index.php b/htdocs/index.php
index ef87f437084..2e1d019d2e7 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -233,7 +233,7 @@ if (empty($user->societe_id))
// Dashboard Link lines
$links=array(DOL_URL_ROOT.'/comm/list.php',
DOL_URL_ROOT.'/comm/prospect/list.php',
- DOL_URL_ROOT.'/fourn/list.php',
+ DOL_URL_ROOT.'/societe/list.php?type=f',
DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members',
DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products',
DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products',
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 453bfbc946e..28a6514328c 100755
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -398,6 +398,7 @@ ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value
fo
ExtrafieldParamHelpradio=Parameters list have to be like key,value
for example : 1,value1 2,value2 3,value3 ...
ExtrafieldParamHelpsellist=Parameters list comes from a table Syntax : table_name:label_field:id_field::filter Example : c_typent:libelle:id::filter
filter can be a simple test (eg active=1) to display only active value if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)
In order to have the list depending on another : c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpchkbxlst=Parameters list comes from a table Syntax : table_name:label_field:id_field::filter Example : c_typent:libelle:id::filter
filter can be a simple test (eg active=1) to display only active value if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)
In order to have the list depending on another : c_typent:libelle:id:parent_list_code|parent_column:filter
+ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath Syntax : ObjectName:Classpath Example : Societe:societe/class/societe.class.php
LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation. To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'
LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are: 1 : local tax apply on products and services without vat (localtax is calculated on amount without tax) 2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax) 3 : local tax apply on products without vat (localtax is calculated on amount without tax) 4 : local tax apply on products including vat (localtax is calculated on amount + main vat) 5 : local tax apply on services without vat (localtax is calculated on amount without tax) 6 : local tax apply on services including vat (localtax is calculated on amount + tax)
@@ -1694,3 +1695,8 @@ MailToSendSupplierOrder=To send supplier order
MailToSendSupplierInvoice=To send supplier invoice
MailToThirdparty=To send email from thirdparty page
ByDefaultInList=Show by default on list view
+YouUseLastStableVersion=You use the last stable version
+TitleExampleForMajorRelease=Example of message you can use to announce this major release (feel free to use it on your web sites)
+TitleExampleForMaintenanceRelease=Example of message you can use to announce this maintenance release (feel free to use it on your web sites)
+ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version %s is a major release with a lot of new features for both users and developers. You can download it from the download area of http://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes.
+ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so it contains only fixes of bugs. We recommend everybody using an older version to upgrade to this one. As any maintenance release, no new features, nor data structure change is present into this version. You can download it from the download area of http://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes.
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 7e1dc3ee929..b8c6735be80 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -752,4 +752,8 @@ ShortSaturday=S
ShortSunday=S
SelectMailModel=Select email template
SetRef=Set ref
-SearchIntoProject=Search %s into projects
\ No newline at end of file
+SearchIntoThirdparties=Search %s into thirdparties
+SearchIntoContacts=Search %s into contacts
+SearchIntoMembers=Search %s into members
+SearchIntoProductsOrServices=Search %s into products or services
+SearchIntoProjects=Search %s into projects
\ No newline at end of file
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 9e6869f7302..f563961ba29 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -1492,7 +1492,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
// Login name with tooltip
$toprightmenu.='
';
print $moreforfilter;
- $parameters=array();
+ $parameters=array('type'=>$type);
$reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
print '
';
@@ -459,7 +503,7 @@ if ($resql)
$parameters=array('arrayfields'=>$arrayfields);
$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
- if (! empty($arrayfields['s.status']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="right"',$sortfield,$sortorder);
+ if (! empty($arrayfields['s.status']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="center"',$sortfield,$sortorder);
if (! empty($arrayfields['s.datec']['checked'])) print_liste_field_titre($langs->trans("DateCreationShort"),$_SERVER["PHP_SELF"],"s.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder);
if (! empty($arrayfields['s.tms']['checked'])) print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"s.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder);
print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch ');
@@ -596,7 +640,7 @@ if ($resql)
if (! empty($arrayfields['s.status']['checked']))
{
// Status
- print '