diff --git a/htdocs/categories/index.php b/htdocs/categories/index.php
index d804cced41c..16cba59ca4a 100644
--- a/htdocs/categories/index.php
+++ b/htdocs/categories/index.php
@@ -65,7 +65,11 @@ $arrayofcss=array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.css')
llxHeader('', $title, '', '', 0, 0, $arrayofjs, $arrayofcss);
-$newcardbutton.= dolGetButtonTitle($langs->trans('NewCategory'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/categories/card.php?action=create&type='.$type.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?type='.$type));
+
+$newcardbutton='';
+if (! empty($user->rights->categorie->creer)) {
+ $newcardbutton.= dolGetButtonTitle($langs->trans('NewCategory'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/categories/card.php?action=create&type='.$type.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?type='.$type));
+}
print load_fiche_titre($title, $newcardbutton);
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index c8cba5c3dda..7331d7a86e9 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -321,7 +321,7 @@ if (empty($reshook))
$datep = dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear'));
$date_delivery = dol_mktime(12, 0, 0, GETPOST('date_livraisonmonth'), GETPOST('date_livraisonday'), GETPOST('date_livraisonyear'));
- $duration = GETPOST('duree_validite');
+ $duration = GETPOST('duree_validite', 'int');
if (empty($datep)) {
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors');
@@ -1622,7 +1622,7 @@ if ($action == 'create')
print '';
// Validaty duration
- print '
| ' . $langs->trans('PaymentConditionsShort') . ' | ';
diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php
index 05350fcbef8..d260ba89a3c 100644
--- a/htdocs/compta/facture/card.php
+++ b/htdocs/compta/facture/card.php
@@ -1408,8 +1408,9 @@ if (empty($reshook))
{
// Don't add lines with qty 0 when coming from a shipment including all order lines
if($srcobject->element == 'shipping' && $conf->global->SHIPMENT_GETS_ALL_ORDER_PRODUCTS && $lines[$i]->qty == 0) continue;
- // Don't add closed lines when coming from a contract
- if($srcobject->element == 'contrat' && $lines[$i]->statut == 5) continue;
+ // Don't add closed lines when coming from a contract (Set constant to '0,5' to exclude also inactive lines)
+ if (! isset( $conf->global->CONTRACT_EXCLUDE_SERVICES_STATUS_FOR_INVOICE)) $conf->global->CONTRACT_EXCLUDE_SERVICES_STATUS_FOR_INVOICE = '5';
+ if ($srcobject->element == 'contrat' && in_array($lines[$i]->statut, explode(',', $conf->global->CONTRACT_EXCLUDE_SERVICES_STATUS_FOR_INVOICE))) continue;
$label=(! empty($lines[$i]->label)?$lines[$i]->label:'');
$desc=(! empty($lines[$i]->desc)?$lines[$i]->desc:$lines[$i]->libelle);
diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php
index ab141f028bd..920acd1c22f 100644
--- a/htdocs/compta/paiement.php
+++ b/htdocs/compta/paiement.php
@@ -848,7 +848,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
*/
if (! GETPOST('action', 'aZ09'))
{
- if ($page == -1) $page = 0 ;
+ if (empty($page) || $page == -1) $page = 0;
$limit = GETPOST('limit', 'int')?GETPOST('limit', 'int'):$conf->liste_limit;
$offset = $limit * $page ;
diff --git a/htdocs/compta/sociales/document.php b/htdocs/compta/sociales/document.php
index 1025f7b11ed..086c5795955 100644
--- a/htdocs/compta/sociales/document.php
+++ b/htdocs/compta/sociales/document.php
@@ -55,7 +55,7 @@ $result = restrictedArea($user, 'tax', $id, 'chargesociales', 'charges');
$sortfield = GETPOST("sortfield", 'alpha');
$sortorder = GETPOST("sortorder", 'alpha');
$page = GETPOST("page", 'int');
-if ($page == -1) {
+if (empty($page) || $page == -1) {
$page = 0;
}
$offset = $conf->liste_limit * $page;
diff --git a/htdocs/compta/tva/document.php b/htdocs/compta/tva/document.php
index 78a1029b2f4..1a3dc9d7dcc 100644
--- a/htdocs/compta/tva/document.php
+++ b/htdocs/compta/tva/document.php
@@ -56,9 +56,10 @@ $result = restrictedArea($user, 'tax', $id, 'vat', 'charges');
$sortfield = GETPOST("sortfield", 'alpha');
$sortorder = GETPOST("sortorder", 'alpha');
$page = GETPOST("page", 'int');
-if ($page == -1) {
+if (empty($page) || $page == -1) {
$page = 0;
}
+
$offset = $conf->liste_limit * $page;
$pageprev = $page - 1;
$pagenext = $page + 1;
diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php
index 65e2b22d0e7..d4f26a377b5 100644
--- a/htdocs/core/actions_massactions.inc.php
+++ b/htdocs/core/actions_massactions.inc.php
@@ -563,14 +563,16 @@ if ($massaction == 'confirm_createbills') // Create bills from orders
$objecttmp->socid = $cmd->socid;
$objecttmp->type = Facture::TYPE_STANDARD;
- $objecttmp->cond_reglement_id = $cmd->cond_reglement_id;
- $objecttmp->mode_reglement_id = $cmd->mode_reglement_id;
- $objecttmp->fk_project = $cmd->fk_project;
+ $objecttmp->cond_reglement_id = $cmd->cond_reglement_id;
+ $objecttmp->mode_reglement_id = $cmd->mode_reglement_id;
+ $objecttmp->fk_project = $cmd->fk_project;
+ $objecttmp->multicurrency_code = $cmd->multicurrency_code;
+ if (empty($createbills_onebythird)) $objecttmp->ref_client = $cmd->ref_client;
- $datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
+ $datefacture = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
if (empty($datefacture))
{
- $datefacture = dol_mktime(date("h"), date("M"), 0, date("m"), date("d"), date("Y"));
+ $datefacture = dol_now();
}
$objecttmp->date = $datefacture;
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 8754200117e..a709d502d93 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -3887,6 +3887,7 @@ abstract class CommonObject
{
$tpl = DOL_DOCUMENT_ROOT.$reldir.'/objectline_create.tpl.php';
}
+
if (empty($conf->file->strict_mode)) {
$res=@include $tpl;
} else {
@@ -4087,6 +4088,7 @@ abstract class CommonObject
{
$tpl = DOL_DOCUMENT_ROOT.$reldir.'/objectline_view.tpl.php';
}
+
if (empty($conf->file->strict_mode)) {
$res=@include $tpl;
} else {
@@ -4117,6 +4119,7 @@ abstract class CommonObject
{
$tpl = DOL_DOCUMENT_ROOT.$reldir.'/objectline_edit.tpl.php';
}
+
if (empty($conf->file->strict_mode)) {
$res=@include $tpl;
} else {
@@ -4192,9 +4195,10 @@ abstract class CommonObject
* @param CommonObjectLine $line Line
* @param string $var Var
* @param string $restrictlist ''=All lines, 'services'=Restrict to services only (strike line if not)
+ * @param string $defaulttpldir Directory where to find the template
* @return void
*/
- public function printOriginLine($line, $var, $restrictlist = '')
+ public function printOriginLine($line, $var, $restrictlist = '', $defaulttpldir = '/core/tpl')
{
global $langs, $conf;
@@ -4315,7 +4319,7 @@ abstract class CommonObject
// Output template part (modules that overwrite templates must declare this into descriptor)
// Use global variables + $dateSelector + $seller and $buyer
- $dirtpls=array_merge($conf->modules_parts['tpl'], array('/core/tpl'));
+ $dirtpls=array_merge($conf->modules_parts['tpl'], array($defaulttpldir));
foreach($dirtpls as $module => $reldir)
{
if (!empty($module))
@@ -4326,6 +4330,7 @@ abstract class CommonObject
{
$tpl = DOL_DOCUMENT_ROOT.$reldir.'/originproductline.tpl.php';
}
+
if (empty($conf->file->strict_mode)) {
$res=@include $tpl;
} else {
diff --git a/htdocs/core/modules/modReceiptPrinter.class.php b/htdocs/core/modules/modReceiptPrinter.class.php
index 2694b852b7a..405ad3161a8 100644
--- a/htdocs/core/modules/modReceiptPrinter.class.php
+++ b/htdocs/core/modules/modReceiptPrinter.class.php
@@ -136,8 +136,8 @@ class modReceiptPrinter extends DolibarrModules
// Clean before activation
$this->remove($options);
$sql = array(
- "CREATE TABLE IF NOT EXISTS llx_printer_receipt (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), fk_type integer, fk_profile integer, parameter varchar(128), entity integer) ENGINE=innodb;",
- "CREATE TABLE IF NOT EXISTS llx_printer_receipt_template (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), template text, entity integer) ENGINE=innodb;",
+ "CREATE TABLE IF NOT EXISTS ".MAIN_DB_PREFIX."printer_receipt (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), fk_type integer, fk_profile integer, parameter varchar(128), entity integer) ENGINE=innodb;",
+ "CREATE TABLE IF NOT EXISTS ".MAIN_DB_PREFIX."printer_receipt_template (rowid integer AUTO_INCREMENT PRIMARY KEY, name varchar(128), template text, entity integer) ENGINE=innodb;",
);
return $this->_init($sql, $options);
}
diff --git a/htdocs/core/modules/modStock.class.php b/htdocs/core/modules/modStock.class.php
index 230d9dd5fbe..f3864525d8d 100644
--- a/htdocs/core/modules/modStock.class.php
+++ b/htdocs/core/modules/modStock.class.php
@@ -345,7 +345,7 @@ class modStock extends DolibarrModules
'ps.fk_product'=>"PREF123456",'ps.fk_entrepot'=>"ALM001",'ps.reel'=>"10"
);
$this->import_run_sql_after_array[$r]=array( // Because we may change data that are denormalized, we must update dernormalized data after.
- 'UPDATE llx_product p SET p.stock= (SELECT SUM(ps.reel) FROM llx_product_stock ps WHERE ps.fk_product = p.rowid);'
+ 'UPDATE '.MAIN_DB_PREFIX.'product p SET p.stock= (SELECT SUM(ps.reel) FROM '.MAIN_DB_PREFIX.'product_stock ps WHERE ps.fk_product = p.rowid);'
);
}
diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php
index f45d4009d05..640267e25da 100644
--- a/htdocs/fourn/facture/paiement.php
+++ b/htdocs/fourn/facture/paiement.php
@@ -799,7 +799,7 @@ if (empty($action) || $action == 'list')
$sortfield = GETPOST("sortfield", 'alpha');
$sortorder = GETPOST("sortorder", 'alpha');
$page=GETPOST("page", 'int');
- if ($page == -1 || $page == null) { $page = 0 ; }
+ if (empty($page) || $page == -1) { $page = 0; }
$offset = $limit * $page ;
$pageprev = $page - 1;
$pagenext = $page + 1;
diff --git a/htdocs/hrm/admin/admin_establishment.php b/htdocs/hrm/admin/admin_establishment.php
index 5e6413abb45..2918a8d95ab 100644
--- a/htdocs/hrm/admin/admin_establishment.php
+++ b/htdocs/hrm/admin/admin_establishment.php
@@ -54,7 +54,7 @@ $sortfield = GETPOST("sortfield");
if (!$sortorder) $sortorder="DESC";
if (!$sortfield) $sortfield="e.rowid";
-if ($page == -1) {
+if (empty($page) || $page == -1) {
$page = 0 ;
}
diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php
index d55cdd7d01f..b241c8729a7 100644
--- a/htdocs/install/repair.php
+++ b/htdocs/install/repair.php
@@ -847,7 +847,7 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha'))
if ($resql2)
{
// We update product_stock, so we must field stock into product too.
- $sql3='UPDATE llx_product p SET p.stock= (SELECT SUM(ps.reel) FROM llx_product_stock ps WHERE ps.fk_product = p.rowid)';
+ $sql3='UPDATE '.MAIN_DB_PREFIX.'product p SET p.stock= (SELECT SUM(ps.reel) FROM '.MAIN_DB_PREFIX.'product_stock ps WHERE ps.fk_product = p.rowid)';
$resql3=$db->query($sql3);
if (! $resql3)
{
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index b5d05a4dd4a..c932b2631e8 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -699,8 +699,8 @@ function migrate_paiements_orphelins_1($db, $langs, $conf)
$sql = "SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount,";
$sql.= " bu2.url_id as socid";
$sql.= " FROM (".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."bank_url as bu, ".MAIN_DB_PREFIX."bank as b)";
- $sql.= " LEFT JOIN llx_paiement_facture as pf ON pf.fk_paiement = p.rowid";
- $sql.= " LEFT JOIN llx_bank_url as bu2 ON (bu.fk_bank=bu2.fk_bank AND bu2.type = 'company')";
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON pf.fk_paiement = p.rowid";
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu2 ON (bu.fk_bank=bu2.fk_bank AND bu2.type = 'company')";
$sql.= " WHERE pf.rowid IS NULL AND (p.rowid=bu.url_id AND bu.type='payment') AND bu.fk_bank = b.rowid";
$sql.= " AND b.rappro = 1";
$sql.= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL)";
@@ -826,8 +826,8 @@ function migrate_paiements_orphelins_2($db, $langs, $conf)
$sql = "SELECT distinct p.rowid, p.datec, p.amount as pamount, bu.fk_bank, b.amount as bamount,";
$sql.= " bu2.url_id as socid";
$sql.= " FROM (".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."bank_url as bu, ".MAIN_DB_PREFIX."bank as b)";
- $sql.= " LEFT JOIN llx_paiement_facture as pf ON pf.fk_paiement = p.rowid";
- $sql.= " LEFT JOIN llx_bank_url as bu2 ON (bu.fk_bank = bu2.fk_bank AND bu2.type = 'company')";
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON pf.fk_paiement = p.rowid";
+ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu2 ON (bu.fk_bank = bu2.fk_bank AND bu2.type = 'company')";
$sql.= " WHERE pf.rowid IS NULL AND (p.fk_bank = bu.fk_bank AND bu.type = 'payment') AND bu.fk_bank = b.rowid";
$sql.= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL)";
@@ -1143,7 +1143,7 @@ function migrate_contracts_date1($db, $langs, $conf)
print ' ';
print ''.$langs->trans('MigrationContractsEmptyDatesUpdate')." \n";
- $sql="update llx_contrat set date_contrat=tms where date_contrat is null";
+ $sql="update ".MAIN_DB_PREFIX."contrat set date_contrat=tms where date_contrat is null";
dolibarr_install_syslog("upgrade2::migrate_contracts_date1");
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
@@ -1152,7 +1152,7 @@ function migrate_contracts_date1($db, $langs, $conf)
else
print $langs->trans('MigrationContractsEmptyDatesNothingToUpdate')." \n";
- $sql="update llx_contrat set datec=tms where datec is null";
+ $sql="update ".MAIN_DB_PREFIX."contrat set datec=tms where datec is null";
dolibarr_install_syslog("upgrade2::migrate_contracts_date1");
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
@@ -1243,7 +1243,7 @@ function migrate_contracts_date3($db, $langs, $conf)
print ' ';
print ''.$langs->trans('MigrationContractsIncoherentCreationDateUpdate')." \n";
- $sql="update llx_contrat set datec=date_contrat where datec is null or datec > date_contrat";
+ $sql="update ".MAIN_DB_PREFIX."contrat set datec=date_contrat where datec is null or datec > date_contrat";
dolibarr_install_syslog("upgrade2::migrate_contracts_date3");
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
@@ -1270,7 +1270,7 @@ function migrate_contracts_open($db, $langs, $conf)
print ' ';
print ''.$langs->trans('MigrationReopeningContracts')." \n";
- $sql = "SELECT c.rowid as cref FROM llx_contrat as c, llx_contratdet as cd";
+ $sql = "SELECT c.rowid as cref FROM ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."contratdet as cd";
$sql.= " WHERE cd.statut = 4 AND c.statut=2 AND c.rowid=cd.fk_contrat";
dolibarr_install_syslog("upgrade2::migrate_contracts_open");
$resql = $db->query($sql);
@@ -2003,7 +2003,7 @@ function migrate_modeles($db, $langs, $conf)
if (count($modellist)==0)
{
// Aucun model par defaut.
- $sql=" insert into llx_document_model(nom,type) values('crabe','invoice')";
+ $sql=" insert into ".MAIN_DB_PREFIX."document_model(nom,type) values('crabe','invoice')";
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
}
@@ -2016,7 +2016,7 @@ function migrate_modeles($db, $langs, $conf)
if (count($modellist)==0)
{
// Aucun model par defaut.
- $sql=" insert into llx_document_model(nom,type) values('einstein','order')";
+ $sql=" insert into ".MAIN_DB_PREFIX."document_model(nom,type) values('einstein','order')";
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
}
@@ -2029,7 +2029,7 @@ function migrate_modeles($db, $langs, $conf)
if (count($modellist)==0)
{
// Aucun model par defaut.
- $sql=" insert into llx_document_model(nom,type) values('rouget','shipping')";
+ $sql=" insert into ".MAIN_DB_PREFIX."document_model(nom,type) values('rouget','shipping')";
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
}
diff --git a/htdocs/loan/document.php b/htdocs/loan/document.php
index 0b7e23bbd3f..7544e1913e8 100644
--- a/htdocs/loan/document.php
+++ b/htdocs/loan/document.php
@@ -47,7 +47,7 @@ $result = restrictedArea($user, 'loan', $id, '', '');
$sortfield = GETPOST("sortfield", 'alpha');
$sortorder = GETPOST("sortorder", 'alpha');
$page = GETPOST("page", 'int');
-if ($page == -1) {
+if (empty($page) || $page == -1) {
$page = 0;
}
$offset = $conf->liste_limit * $page;
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index b0d34db43eb..319ee2dc363 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -401,13 +401,19 @@ if ((! defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && ! empty($conf->
if (GETPOSTISSET('disablemodules')) $_SESSION["disablemodules"]=GETPOST('disablemodules', 'alpha');
if (! empty($_SESSION["disablemodules"]))
{
+ $modulepartkeys = array('css', 'js', 'tabs', 'triggers', 'login', 'substitutions', 'menus', 'theme', 'sms', 'tpl', 'barcode', 'models', 'societe', 'hooks', 'dir', 'syslog', 'tpllinkable', 'contactelement', 'moduleforexternal');
+
$disabled_modules=explode(',', $_SESSION["disablemodules"]);
foreach($disabled_modules as $module)
{
if ($module)
{
- if (empty($conf->$module)) $conf->$module=new stdClass();
+ if (empty($conf->$module)) $conf->$module=new stdClass(); // To avoid warnings
$conf->$module->enabled=false;
+ foreach($modulepartkeys as $modulepartkey)
+ {
+ unset($conf->modules_parts[$modulepartkey][$module]);
+ }
if ($module == 'fournisseur') // Special case
{
$conf->supplier_order->enabled=0;
diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php
index 7adec8e6009..2f45be04542 100644
--- a/htdocs/resource/class/dolresource.class.php
+++ b/htdocs/resource/class/dolresource.class.php
@@ -547,13 +547,13 @@ class Dolresource extends CommonObject
if ($limit) $sql.= $this->db->plimit($limit, $offset);
dol_syslog(get_class($this)."::fetch_all", LOG_DEBUG);
+ $this->lines=array();
$resql=$this->db->query($sql);
if ($resql)
{
$num = $this->db->num_rows($resql);
if ($num)
{
- $this->lines=array();
while ($obj = $this->db->fetch_object($resql))
{
$line = new Dolresource($this->db);
@@ -853,6 +853,8 @@ class Dolresource extends CommonObject
$sql .= ' ORDER BY resource_type';
dol_syslog(get_class($this)."::getElementResources", LOG_DEBUG);
+
+ $resources = array();
$resql = $this->db->query($sql);
if ($resql)
{
@@ -904,7 +906,7 @@ class Dolresource extends CommonObject
// phpcs:enable
global $langs;
- if (count($this->cache_code_type_resource)) return 0; // Cache deja charge
+ if (is_array($this->cache_code_type_resource) && count($this->cache_code_type_resource)) return 0; // Cache deja charge
$sql = "SELECT rowid, code, label, active";
$sql.= " FROM ".MAIN_DB_PREFIX."c_type_resource";
diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php
index f9fd60c3566..975b463da05 100644
--- a/htdocs/resource/class/html.formresource.class.php
+++ b/htdocs/resource/class/html.formresource.class.php
@@ -93,8 +93,6 @@ class FormResource
$out = ' |