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/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql
index 4942378e58c..670177d1e55 100755
--- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql
+++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql
@@ -67,9 +67,14 @@ ALTER TABLE llx_prelevement_lignes MODIFY COLUMN code_banque varchar(128);
ALTER TABLE llx_societe_rib MODIFY COLUMN code_banque varchar(128);
ALTER TABLE llx_contrat ADD COLUMN ref_customer varchar(30);
+ALTER TABLE llx_commande ADD COLUMN fk_warehouse integer DEFAULT NULL after fk_shipping_method;
+ALTER TABLE llx_ecm_directories MODIFY COLUMN fullpath varchar(750);
+
+ALTER TABLE llx_ecm_directories DROP INDEX idx_ecm_directories;
+ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories (label, fk_parent, entity);
+--ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories_fullpath(fullpath);
-ALTER TABLE llx_ecm_directories MODIFY COLUMN fullpath varchar(10000);
CREATE TABLE llx_ecm_files
(
@@ -77,8 +82,8 @@ CREATE TABLE llx_ecm_files
label varchar(64) NOT NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id
filename varchar(255) NOT NULL, -- file name only without any directory
- fullpath varchar(10000) NOT NULL, -- relative to dolibarr document dir. example abc/def/myfile
- fullpath_orig varchar(10000), -- full path of original filename, when file is uploaded from a local computer
+ fullpath varchar(750) NOT NULL, -- relative to dolibarr document dir. example abc/def/myfile. restricted to 750 because of unique key index on it.
+ fullpath_orig varchar(2048), -- full path of original filename, when file is uploaded from a local computer
description text,
keywords text, -- list of keywords, separated with comma
cover text, -- is this file a file to use for a cover
@@ -90,5 +95,8 @@ CREATE TABLE llx_ecm_files
acl text -- for future permission 'per file'
) ENGINE=innodb;
-ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath);
+ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (label, entity);
+--ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath);
+
+ALTER TABLE llx_product ADD COLUMN onportal tinyint DEFAULT 0 after tobuy;
diff --git a/htdocs/install/mysql/tables/llx_commande.sql b/htdocs/install/mysql/tables/llx_commande.sql
index 3511aa7ec78..553b2facad7 100644
--- a/htdocs/install/mysql/tables/llx_commande.sql
+++ b/htdocs/install/mysql/tables/llx_commande.sql
@@ -63,6 +63,7 @@ create table llx_commande
date_livraison date default NULL,
fk_shipping_method integer, -- shipping method id
+ fk_warehouse integer default NULL,
fk_availability integer NULL,
fk_input_reason integer, -- id coming from c_input_reason, '0' if no defined
fk_delivery_address integer, -- delivery address (deprecated)
diff --git a/htdocs/install/mysql/tables/llx_ecm_directories.key.sql b/htdocs/install/mysql/tables/llx_ecm_directories.key.sql
index 2da97ec974f..2e96a5f8e95 100644
--- a/htdocs/install/mysql/tables/llx_ecm_directories.key.sql
+++ b/htdocs/install/mysql/tables/llx_ecm_directories.key.sql
@@ -18,7 +18,8 @@
-- ============================================================================
-ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX idx_ecm_directories (label, fk_parent, entity);
+ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories (label, fk_parent, entity);
+--ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories_fullpath(fullpath); Disabled, mysql limits size of index
ALTER TABLE llx_ecm_directories ADD INDEX idx_ecm_directories_fk_user_c (fk_user_c);
ALTER TABLE llx_ecm_directories ADD INDEX idx_ecm_directories_fk_user_m (fk_user_m);
diff --git a/htdocs/install/mysql/tables/llx_ecm_directories.sql b/htdocs/install/mysql/tables/llx_ecm_directories.sql
index 22f77608029..518fdd4c9e1 100644
--- a/htdocs/install/mysql/tables/llx_ecm_directories.sql
+++ b/htdocs/install/mysql/tables/llx_ecm_directories.sql
@@ -27,7 +27,7 @@ CREATE TABLE llx_ecm_directories
fk_parent integer,
description varchar(255) NOT NULL,
cachenbofdoc integer NOT NULL DEFAULT 0,
- fullpath varchar(10000),
+ fullpath varchar(750),
extraparams varchar(255), -- for stock other parameters with json format
date_c datetime,
date_m timestamp,
diff --git a/htdocs/install/mysql/tables/llx_ecm_files.key.sql b/htdocs/install/mysql/tables/llx_ecm_files.key.sql
index b689bf0b0fb..9b1f4fcf164 100644
--- a/htdocs/install/mysql/tables/llx_ecm_files.key.sql
+++ b/htdocs/install/mysql/tables/llx_ecm_files.key.sql
@@ -17,4 +17,5 @@
-- ============================================================================
-ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath);
+ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (label, entity);
+--ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath); Disabled, mysql limits size of index
diff --git a/htdocs/install/mysql/tables/llx_ecm_files.sql b/htdocs/install/mysql/tables/llx_ecm_files.sql
index 1c4451d939a..e984c7c9098 100644
--- a/htdocs/install/mysql/tables/llx_ecm_files.sql
+++ b/htdocs/install/mysql/tables/llx_ecm_files.sql
@@ -22,8 +22,8 @@ CREATE TABLE llx_ecm_files
label varchar(64) NOT NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id
filename varchar(255) NOT NULL, -- file name only without any directory
- fullpath varchar(10000) NOT NULL, -- relative to dolibarr document dir. example abc/def/myfile
- fullpath_orig varchar(10000), -- full path of original filename, when file is uploaded from a local computer
+ fullpath varchar(750) NOT NULL, -- relative to dolibarr document dir. example abc/def/myfile
+ fullpath_orig varchar(750), -- full path of original filename, when file is uploaded from a local computer
description text,
keywords text, -- list of keywords, separated with comma
cover text, -- is this file a file to use for a cover
diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql
index 22006040327..42832a6b227 100755
--- a/htdocs/install/mysql/tables/llx_product.sql
+++ b/htdocs/install/mysql/tables/llx_product.sql
@@ -52,6 +52,7 @@ create table llx_product
fk_user_modif integer, -- user making last change
tosell tinyint DEFAULT 1, -- Product you sell
tobuy tinyint DEFAULT 1, -- Product you buy
+ onportal tinyint DEFAULT 0, -- If it is a product you sell and you want to sell it on portal (module website must be on)
tobatch tinyint DEFAULT 0 NOT NULL, -- Is it a product that need a batch or eat-by management
fk_product_type integer DEFAULT 0, -- Type of product: 0 for regular product, 1 for service, 9 for other (used by external module)
duration varchar(6),
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 6f720c0a92b..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)
@@ -1203,6 +1204,7 @@ AskPriceSupplierPDFModules=Price requests suppliers documents models
FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers
WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty)
BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request
+WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order
##### Orders #####
OrdersSetup=Order management setup
OrdersNumberingModules=Orders numbering models
@@ -1692,4 +1694,9 @@ MailToSendSupplierRequestForQuotation=To send quotation request to supplier
MailToSendSupplierOrder=To send supplier order
MailToSendSupplierInvoice=To send supplier invoice
MailToThirdparty=To send email from thirdparty page
-ByDefaultInList=Show by default on list view
\ No newline at end of file
+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/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang
index bd1bb09d40f..287a83afba3 100644
--- a/htdocs/langs/en_US/orders.lang
+++ b/htdocs/langs/en_US/orders.lang
@@ -79,6 +79,8 @@ OrdersOpened=Orders to process
NoOpenedOrders=No open orders
NoOtherOpenedOrders=No other open orders
NoDraftOrders=No draft orders
+NoOrder=No Order
+NoSupplierOrder=No supplier order
OtherOrders=Other orders
LastOrders=Last %s customer orders
LastCustomerOrders=Last %s customer orders
@@ -105,6 +107,7 @@ ClassifyShipped=Classify delivered
ClassifyBilled=Classify billed
ComptaCard=Accountancy card
DraftOrders=Draft orders
+DraftSuppliersOrders=Draft suppliers orders
RelatedOrders=Related orders
RelatedCustomerOrders=Related customer orders
RelatedSupplierOrders=Related supplier orders
diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang
index 168f98a2789..d12d7595f94 100644
--- a/htdocs/langs/en_US/propal.lang
+++ b/htdocs/langs/en_US/propal.lang
@@ -53,6 +53,7 @@ ListOfProposals=List of commercial proposals
ActionsOnPropal=Events on proposal
NoOpenedPropals=No open commercial proposals
NoOtherOpenedPropals=No other open commercial proposals
+NoPropal=No commercial proposal
RefProposal=Commercial proposal ref
SendPropalByMail=Send commercial proposal by mail
AssociatedDocuments=Documents associated with the proposal:
@@ -98,4 +99,4 @@ DocModelJauneDescription=Jaune proposal model
DefaultModelPropalCreate=Default model creation
DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced)
DefaultModelPropalClosed=Default template when closing a business proposal (unbilled)
-ProposalCustomerSignature=Written acceptance, company stamp, date and signature
\ No newline at end of file
+ProposalCustomerSignature=Written acceptance, company stamp, date and signature
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 9e6869f7302..3a573b23f4d 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -515,7 +515,7 @@ if (! defined('NOLOGIN'))
exit;
}
- $resultFetchUser=$user->fetch('',$login);
+ $resultFetchUser=$user->fetch('', $login, '', 0, ($entitytotest ? $entitytotest : -1);
if ($resultFetchUser <= 0)
{
dol_syslog('User not found, connexion refused');
@@ -1492,7 +1492,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
// Login name with tooltip
$toprightmenu.='
';
$toprightmenu.='';
@@ -1606,7 +1606,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me
if (! empty($conf->projet->enabled) && ! empty($conf->global->MAIN_SEARCHFORM_PROJECT) && $user->rights->projet->lire)
{
- $langs->load("members");
+ $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'));
}
diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php
index 0215f20e3c6..f08143c443c 100644
--- a/htdocs/product/class/html.formproduct.class.php
+++ b/htdocs/product/class/html.formproduct.class.php
@@ -134,6 +134,40 @@ class FormProduct
return $out;
}
+ /**
+ * Display form to select warehouse
+ *
+ * @param string $page Page
+ * @param int $selected Id of warehouse
+ * @param string $htmlname Name of select html field
+ * @param int $addempty 1=Add an empty value in list, 2=Add an empty value in list only if there is more than 2 entries.
+ * @return void
+ */
+ function formSelectWarehouses($page, $selected='', $htmlname='warehouse_id', $addempty=0)
+ {
+ global $langs;
+ if ($htmlname != "none") {
+ print '';
+ } else {
+ if ($selected) {
+ require_once DOL_DOCUMENT_ROOT .'/product/stock/class/entrepot.class.php';
+ $warehousestatic=new Entrepot($this->db);
+ $warehousestatic->fetch($selected);
+ print $warehousestatic->getNomUrl();
+ } else {
+ print " ";
+ }
+ }
+ }
+
/**
* Output a combo box with list of units
* pour l'instant on ne definit pas les unites dans la base
diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php
index d27d6891119..86de804c6a1 100644
--- a/htdocs/societe/index.php
+++ b/htdocs/societe/index.php
@@ -155,7 +155,7 @@ else
if (! empty($conf->fournisseur->enabled) && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS))
{
$statstring2 = "
';
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 '