Merge branch '3.6' of git@github.com:Dolibarr/dolibarr.git into 3.6
This commit is contained in:
commit
ac6619daef
@ -37,6 +37,7 @@ English Dolibarr ChangeLog
|
|||||||
- Fix: [ bug #2545 ] Missing object_margin.png in Amarok theme
|
- Fix: [ bug #2545 ] Missing object_margin.png in Amarok theme
|
||||||
- Fix: [ bug #2542 ] Contracts store localtax preferences
|
- Fix: [ bug #2542 ] Contracts store localtax preferences
|
||||||
- Fix: Bad permission assignments for stock movements actions
|
- Fix: Bad permission assignments for stock movements actions
|
||||||
|
- Fix: [ bug #2891 ] Category hooks do not work
|
||||||
|
|
||||||
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
|
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
|
||||||
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
|
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
|
||||||
@ -205,6 +206,11 @@ Fix: [ bug #2577 ] Incorrect invoice status in "Linked objects" page of a projec
|
|||||||
Fix: [ bug #2576 ] Unable to edit a dictionary entry that has # in its ref
|
Fix: [ bug #2576 ] Unable to edit a dictionary entry that has # in its ref
|
||||||
Fix: [ bug #2758 ] Product::update sets product note to "null" when $prod->note is null
|
Fix: [ bug #2758 ] Product::update sets product note to "null" when $prod->note is null
|
||||||
Fix: [ bug #2757 ] Deleting product category photo gives "Forbidden access" error
|
Fix: [ bug #2757 ] Deleting product category photo gives "Forbidden access" error
|
||||||
|
Fix: [ bug #2976 ] "Report" tab is the current tab but it is not marked as selected by the UI
|
||||||
|
Fix: [ bug #2861 ] Undefined variable $res when migrating
|
||||||
|
Fix: [ bug #2837 ] Product list table column header does not match column body
|
||||||
|
Fix: [ bug #2835 ] Customer prices of a product shows incorrect history order
|
||||||
|
Fix: [ bug #2814 ] JPEG photos are not displayed in Product photos page
|
||||||
|
|
||||||
***** ChangeLog for 3.5.6 compared to 3.5.5 *****
|
***** ChangeLog for 3.5.6 compared to 3.5.5 *****
|
||||||
Fix: Avoid missing class error for fetch_thirdparty method #1973
|
Fix: Avoid missing class error for fetch_thirdparty method #1973
|
||||||
|
|||||||
@ -56,6 +56,9 @@ $object = new Categorie($db);
|
|||||||
$extrafields = new ExtraFields($db);
|
$extrafields = new ExtraFields($db);
|
||||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
|
||||||
|
$hookmanager->initHooks(array('categorycard'));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -64,6 +64,9 @@ $object = new Categorie($db);
|
|||||||
$extrafields = new ExtraFields($db);
|
$extrafields = new ExtraFields($db);
|
||||||
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
|
||||||
|
$hookmanager->initHooks(array('categorycard'));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -63,6 +63,9 @@ $type=$object->type;
|
|||||||
$extrafields = new ExtraFields($db);
|
$extrafields = new ExtraFields($db);
|
||||||
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
|
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
|
||||||
|
$hookmanager->initHooks(array('categorycard'));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copytight (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copytight (C) 2005-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copytight (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
* Copytight (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
|
||||||
*
|
*
|
||||||
@ -180,7 +180,7 @@ print $form->select_comptes($account_to,'account_to',0,'',1);
|
|||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
|
|
||||||
print "<td>";
|
print "<td>";
|
||||||
$form->select_date($dateo,'','','','','add');
|
$form->select_date((! empty($dateo)?$dateo:''),'','','','','add');
|
||||||
print "</td>\n";
|
print "</td>\n";
|
||||||
print '<td><input name="label" class="flat" type="text" size="40" value="'.$label.'"></td>';
|
print '<td><input name="label" class="flat" type="text" size="40" value="'.$label.'"></td>';
|
||||||
print '<td><input name="amount" class="flat" type="text" size="8" value="'.$amount.'"></td>';
|
print '<td><input name="amount" class="flat" type="text" size="8" value="'.$amount.'"></td>';
|
||||||
|
|||||||
@ -165,7 +165,7 @@ function dol_shutdown()
|
|||||||
global $conf,$user,$langs,$db;
|
global $conf,$user,$langs,$db;
|
||||||
$disconnectdone=false; $depth=0;
|
$disconnectdone=false; $depth=0;
|
||||||
if (is_object($db) && ! empty($db->connected)) { $depth=$db->transaction_opened; $disconnectdone=$db->close(); }
|
if (is_object($db) && ! empty($db->connected)) { $depth=$db->transaction_opened; $disconnectdone=$db->close(); }
|
||||||
dol_syslog("--- End access to ".$_SERVER["PHP_SELF"].(($disconnectdone && $depth)?' (Warn: db disconnection forced, transaction depth was '.$depth.')':''), (($disconnectdone && $depth)?LOG_WARNING:LOG_DEBUG));
|
dol_syslog("--- End access to ".$_SERVER["PHP_SELF"].(($disconnectdone && $depth)?' (Warn: db disconnection forced, transaction depth was '.$depth.')':''), (($disconnectdone && $depth)?LOG_WARNING:LOG_INFO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='')
|
function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='')
|
||||||
{
|
{
|
||||||
global $langs, $hselected;
|
global $langs;
|
||||||
|
|
||||||
print "\n\n<!-- debut cartouche rapport -->\n";
|
print "\n\n<!-- debut cartouche rapport -->\n";
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat
|
|||||||
$head[$h][1] = $langs->trans("Report");
|
$head[$h][1] = $langs->trans("Report");
|
||||||
$head[$h][2] = 'report';
|
$head[$h][2] = 'report';
|
||||||
|
|
||||||
dol_fiche_head($head, $hselected);
|
dol_fiche_head($head, 'report');
|
||||||
|
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
foreach($moreparam as $key => $value)
|
foreach($moreparam as $key => $value)
|
||||||
|
|||||||
@ -184,7 +184,7 @@ else {
|
|||||||
<td align="right"><?php
|
<td align="right"><?php
|
||||||
if (GETPOST('prod_entry_mode') != 'predef')
|
if (GETPOST('prod_entry_mode') != 'predef')
|
||||||
{
|
{
|
||||||
if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" value="0">0';
|
if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" value="0"> '.vatrate(0, true);
|
||||||
else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer);
|
else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer);
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@ -3661,8 +3661,8 @@ function migrate_reload_modules($db,$langs,$conf)
|
|||||||
if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
|
if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
|
||||||
{
|
{
|
||||||
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service");
|
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service");
|
||||||
if ($res) {
|
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php';
|
||||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php';
|
if ($res) {
|
||||||
$mod=new modService($db);
|
$mod=new modService($db);
|
||||||
//$mod->remove('noboxes');
|
//$mod->remove('noboxes');
|
||||||
$mod->init('newboxdefonly');
|
$mod->init('newboxdefonly');
|
||||||
@ -3671,8 +3671,8 @@ function migrate_reload_modules($db,$langs,$conf)
|
|||||||
if (! empty($conf->global->MAIN_MODULE_COMMANDE)) // Permission has changed into 2.9
|
if (! empty($conf->global->MAIN_MODULE_COMMANDE)) // Permission has changed into 2.9
|
||||||
{
|
{
|
||||||
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande");
|
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande");
|
||||||
if ($res) {
|
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php';
|
||||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php';
|
if ($res) {
|
||||||
$mod=new modCommande($db);
|
$mod=new modCommande($db);
|
||||||
//$mod->remove('noboxes');
|
//$mod->remove('noboxes');
|
||||||
$mod->init('newboxdefonly');
|
$mod->init('newboxdefonly');
|
||||||
@ -3681,8 +3681,8 @@ function migrate_reload_modules($db,$langs,$conf)
|
|||||||
if (! empty($conf->global->MAIN_MODULE_FACTURE)) // Permission has changed into 2.9
|
if (! empty($conf->global->MAIN_MODULE_FACTURE)) // Permission has changed into 2.9
|
||||||
{
|
{
|
||||||
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture");
|
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture");
|
||||||
if ($res) {
|
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php';
|
||||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php';
|
if ($res) {
|
||||||
$mod=new modFacture($db);
|
$mod=new modFacture($db);
|
||||||
//$mod->remove('noboxes');
|
//$mod->remove('noboxes');
|
||||||
$mod->init('newboxdefonly');
|
$mod->init('newboxdefonly');
|
||||||
@ -3732,8 +3732,8 @@ function migrate_reload_modules($db,$langs,$conf)
|
|||||||
if (! empty($conf->global->MAIN_MODULE_ECM)) // Permission has changed into 3.0 and 3.1
|
if (! empty($conf->global->MAIN_MODULE_ECM)) // Permission has changed into 3.0 and 3.1
|
||||||
{
|
{
|
||||||
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ECM");
|
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ECM");
|
||||||
if ($res) {
|
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php';
|
||||||
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php';
|
if ($res) {
|
||||||
$mod=new modECM($db);
|
$mod=new modECM($db);
|
||||||
$mod->remove('noboxes'); // We need to remove because a permission id has been removed
|
$mod->remove('noboxes'); // We need to remove because a permission id has been removed
|
||||||
$mod->init('newboxdefonly');
|
$mod->init('newboxdefonly');
|
||||||
|
|||||||
@ -531,7 +531,7 @@ if (! defined('NOLOGIN'))
|
|||||||
{
|
{
|
||||||
// We are already into an authenticated session
|
// We are already into an authenticated session
|
||||||
$login=$_SESSION["dol_login"];
|
$login=$_SESSION["dol_login"];
|
||||||
dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login);
|
dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login, LOG_DEBUG);
|
||||||
|
|
||||||
$resultFetchUser=$user->fetch('',$login);
|
$resultFetchUser=$user->fetch('',$login);
|
||||||
if ($resultFetchUser <= 0)
|
if ($resultFetchUser <= 0)
|
||||||
|
|||||||
@ -3196,7 +3196,7 @@ class Product extends CommonObject
|
|||||||
|
|
||||||
if (! utf8_check($file)) $file=utf8_encode($file); // To be sure file is stored in UTF8 in memory
|
if (! utf8_check($file)) $file=utf8_encode($file); // To be sure file is stored in UTF8 in memory
|
||||||
|
|
||||||
if (dol_is_file($dir.$file) && preg_match('/(\.jpg|\.bmp|\.gif|\.png|\.tiff)$/i', $dir.$file))
|
if (dol_is_file($dir.$file) && preg_match('/(\.jp(e?)g|\.bmp|\.gif|\.png|\.tiff)$/i', $dir.$file))
|
||||||
{
|
{
|
||||||
$nbphoto++;
|
$nbphoto++;
|
||||||
$photo = $file;
|
$photo = $file;
|
||||||
|
|||||||
@ -49,8 +49,8 @@ $sall=GETPOST("sall");
|
|||||||
$type=GETPOST("type","int");
|
$type=GETPOST("type","int");
|
||||||
$search_sale = GETPOST("search_sale");
|
$search_sale = GETPOST("search_sale");
|
||||||
$search_categ = GETPOST("search_categ",'int');
|
$search_categ = GETPOST("search_categ",'int');
|
||||||
$tosell = GETPOST("tosell");
|
$tosell = GETPOST("tosell", 'int');
|
||||||
$tobuy = GETPOST("tobuy");
|
$tobuy = GETPOST("tobuy", 'int');
|
||||||
$fourn_id = GETPOST("fourn_id",'int');
|
$fourn_id = GETPOST("fourn_id",'int');
|
||||||
$catid = GETPOST('catid','int');
|
$catid = GETPOST('catid','int');
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ else
|
|||||||
print '<td class="liste_titre" align="left">';
|
print '<td class="liste_titre" align="left">';
|
||||||
print '<input class="flat" type="text" name="snom" size="12" value="'.htmlspecialchars($snom).'">';
|
print '<input class="flat" type="text" name="snom" size="12" value="'.htmlspecialchars($snom).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
// Barcode
|
// Barcode
|
||||||
if (! empty($conf->barcode->enabled))
|
if (! empty($conf->barcode->enabled))
|
||||||
{
|
{
|
||||||
@ -332,7 +332,7 @@ else
|
|||||||
print '<input class="flat" type="text" name="sbarcode" size="6" value="'.htmlspecialchars($sbarcode).'">';
|
print '<input class="flat" type="text" name="sbarcode" size="6" value="'.htmlspecialchars($sbarcode).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Date modification
|
// Date modification
|
||||||
print '<td class="liste_titre">';
|
print '<td class="liste_titre">';
|
||||||
print ' ';
|
print ' ';
|
||||||
|
|||||||
@ -366,10 +366,10 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) {
|
|||||||
// Prix mini
|
// Prix mini
|
||||||
print '<tr><td>' . $langs->trans("MinPrice") . ' ' . $i . '</td><td>';
|
print '<tr><td>' . $langs->trans("MinPrice") . ' ' . $i . '</td><td>';
|
||||||
if (empty($object->multiprices_base_type["$i"])) $object->multiprices_base_type["$i"]="HT";
|
if (empty($object->multiprices_base_type["$i"])) $object->multiprices_base_type["$i"]="HT";
|
||||||
if ($object->multiprices_base_type["$i"] == 'TTC')
|
if ($object->multiprices_base_type["$i"] == 'TTC')
|
||||||
{
|
{
|
||||||
print price($object->multiprices_min_ttc["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]);
|
print price($object->multiprices_min_ttc["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print price($object->multiprices_min["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]);
|
print price($object->multiprices_min["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]);
|
||||||
@ -686,9 +686,8 @@ $sql .= " " . MAIN_DB_PREFIX . "user as u";
|
|||||||
$sql .= " WHERE fk_product = " . $object->id;
|
$sql .= " WHERE fk_product = " . $object->id;
|
||||||
$sql .= " AND p.entity IN (" . getEntity('productprice', 1) . ")";
|
$sql .= " AND p.entity IN (" . getEntity('productprice', 1) . ")";
|
||||||
$sql .= " AND p.fk_user_author = u.rowid";
|
$sql .= " AND p.fk_user_author = u.rowid";
|
||||||
if (! empty($socid) && ! empty($conf->global->PRODUIT_MULTIPRICES))
|
if (! empty($socid) && ! empty($conf->global->PRODUIT_MULTIPRICES)) $sql .= " AND p.price_level = " . $soc->price_level;
|
||||||
$sql .= " AND p.price_level = " . $soc->price_level;
|
$sql .= " ORDER BY p.date_price DESC, p.price_level ASC, p.rowid DESC";
|
||||||
$sql .= " ORDER BY p.date_price DESC, p.price_level ASC";
|
|
||||||
// $sql .= $db->plimit();
|
// $sql .= $db->plimit();
|
||||||
|
|
||||||
dol_syslog("sql=" . $sql);
|
dol_syslog("sql=" . $sql);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user