diff --git a/htdocs/cashdesk/affContenu.php b/htdocs/cashdesk/affContenu.php
index 280f2b81908..bd778f3422e 100644
--- a/htdocs/cashdesk/affContenu.php
+++ b/htdocs/cashdesk/affContenu.php
@@ -34,8 +34,8 @@ if ( $_GET['id'] == 'NOUV' )
// Recuperation, s'il existe, de l'objet contenant les infos de la vente en cours ...
if (isset($_SESSION['serObjFacturation']))
{
- $obj_facturation = unserialize($_SESSION['serObjFacturation']);
- unset($_SESSION['serObjFacturation']);
+ $obj_facturation = unserialize($_SESSION['serObjFacturation']);
+ unset($_SESSION['serObjFacturation']);
}
else
{
@@ -43,7 +43,7 @@ else
$obj_facturation = new Facturation();
}
-
+// $obj_facturation contains data for all invoice total + selection of current product
$obj_facturation->calculTotaux(); // Redefine prix_total_ttc, prix_total_ht et montant_tva from $_SESSION['poscart']
diff --git a/htdocs/cashdesk/class/Facturation.class.php b/htdocs/cashdesk/class/Facturation.class.php
index 579d244246b..b55524a874a 100644
--- a/htdocs/cashdesk/class/Facturation.class.php
+++ b/htdocs/cashdesk/class/Facturation.class.php
@@ -99,17 +99,25 @@ class Facturation
$product = new Product($db);
$product->fetch($this->id);
-
+
$vatrowid = $this->tva();
-
+
$tmp = getTaxesFromId($vatrowid);
- $vat_rate = $tmp['rate'];
+ $txtva = $tmp['rate'].(empty($tmp['code'])?'':' ('.$tmp['code'].')');
$vat_npr = $tmp['npr'];
-
+
$localtaxarray = getLocalTaxesFromRate($vatrowid, 0, $societe, $mysoc, 1);
-
+
+ // Clean vat code
+ $vat_src_code='';
+ if (preg_match('/\((.*)\)/', $txtva, $reg))
+ {
+ $vat_src_code = $reg[1];
+ $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate.
+ }
+
// Define part of HT, VAT, TTC
- $resultarray=calcul_price_total($this->qte, $this->prix(), $this->remisePercent(), $vat_rate, -1, -1, 0, 'HT', $use_npr, $product->type, $mysoc, $localtaxarray);
+ $resultarray=calcul_price_total($this->qte, $this->prix(), $this->remisePercent(), $txtva, -1, -1, 0, 'HT', $use_npr, $product->type, $mysoc, $localtaxarray);
// Calcul du total ht sans remise
$total_ht = $resultarray[0];
@@ -136,7 +144,7 @@ class Facturation
$newcartarray[$i]['label']=$product->label;
$newcartarray[$i]['price']=$product->price;
$newcartarray[$i]['price_ttc']=$product->price_ttc;
-
+
if (! empty($conf->global->PRODUIT_MULTIPRICES))
{
if (isset($product->multiprices[$societe->price_level]))
@@ -148,7 +156,7 @@ class Facturation
$newcartarray[$i]['fk_article']=$this->id;
$newcartarray[$i]['qte']=$this->qte();
- $newcartarray[$i]['fk_tva']=$this->tva();
+ $newcartarray[$i]['fk_tva']=$this->tva(); // Vat rowid
$newcartarray[$i]['remise_percent']=$remise_percent;
$newcartarray[$i]['remise']=price2num($montant_remise_ht);
$newcartarray[$i]['total_ht']=price2num($total_ht,'MT');
@@ -220,7 +228,7 @@ class Facturation
$this->prix_total_vat = $total_vat;
$this->prix_total_localtax1 = $total_localtax1;
$this->prix_total_localtax2 = $total_localtax2;
-
+
$this->montant_tva = $total_ttc - $total_ht;
//print $this->prix_total_ttc.'eeee'; exit;
}
diff --git a/htdocs/cashdesk/facturation.php b/htdocs/cashdesk/facturation.php
index 5a7a56e333e..f52890b68d2 100644
--- a/htdocs/cashdesk/facturation.php
+++ b/htdocs/cashdesk/facturation.php
@@ -35,7 +35,7 @@
$form=new Form($db);
// Get list of articles (in warehouse '$conf_fkentrepot' if defined and stock module enabled)
-if ( GETPOST('filtre') ) {
+if ( GETPOST('filtre','alpha') ) {
// Avec filtre
$ret=array(); $i=0;
@@ -47,22 +47,23 @@ if ( GETPOST('filtre') ) {
$sql.= " WHERE p.entity IN (".getEntity('product').")";
$sql.= " AND p.tosell = 1";
if(!$conf->global->CASHDESK_SERVICES) $sql.= " AND p.fk_product_type = 0";
- $sql.= " AND (p.ref LIKE '%".$db->escape(GETPOST('filtre'))."%' OR p.label LIKE '%".$db->escape(GETPOST('filtre'))."%'";
- if (! empty($conf->barcode->enabled)) {
-
- $filtre = GETPOST('filtre');
+ $sql.= " AND (";
+ $sql.= "p.ref LIKE '%".$db->escape(GETPOST('filtre'))."%' OR p.label LIKE '%".$db->escape(GETPOST('filtre'))."%'";
+ if (! empty($conf->barcode->enabled))
+ {
+ $filtre = GETPOST('filtre','alpha');
//If the barcode looks like an EAN13 format and the last digit is included in it,
//then whe look for the 12-digit too
//As the twelve-digit string will also hit the 13-digit code, we only look for this one
if (strlen($filtre) == 13) {
$crit_12digit = substr($filtre, 0, 12);
- $sql .= " OR p.barcode LIKE '%".$db->escape($crit_12digit)."%')";
+ $sql .= " OR p.barcode LIKE '%".$db->escape($crit_12digit)."%'";
} else {
- $sql.= " OR p.barcode LIKE '%".$db->escape($filtre)."%')";
+ $sql.= " OR p.barcode LIKE '%".$db->escape($filtre)."%'";
}
}
- else $sql.= ")";
+ $sql.= ")";
$sql.= " ORDER BY label";
dol_syslog("facturation.php", LOG_DEBUG);
@@ -154,34 +155,6 @@ global $mysoc;
$ret=array();
$i=0;
-$sql = "SELECT t.rowid, t.taux";
-$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t";
-$sql.= ", ".MAIN_DB_PREFIX."c_country as c";
-$sql.= " WHERE t.fk_pays = c.rowid";
-$sql.= " AND t.active = 1";
-$sql.= " AND c.code = '".$mysoc->country_code."'";
-//print $sql;
-
-$resql = $db->query($sql);
-if ($resql)
-{
- while ( $tab = $db->fetch_array($resql) )
- {
- foreach ( $tab as $cle => $valeur )
- {
- $ret[$i][$cle] = $valeur;
- }
- $i++;
- }
- $db->free($resql);
-}
-else
-{
- dol_print_error($db);
-}
-$tab_tva = $ret;
-
-
// Reinitialisation du mode de paiement, en cas de retour aux achats apres validation
$obj_facturation->getSetPaymentMode('RESET');
$obj_facturation->montantEncaisse('RESET');
diff --git a/htdocs/cashdesk/facturation_verif.php b/htdocs/cashdesk/facturation_verif.php
index 96742ddfebf..24876a0a8fb 100644
--- a/htdocs/cashdesk/facturation_verif.php
+++ b/htdocs/cashdesk/facturation_verif.php
@@ -39,7 +39,7 @@ switch($action)
default:
if ( $_POST['hdnSource'] != 'NULL' )
{
- $sql = "SELECT p.rowid, p.ref, p.price, p.tva_tx, p.recuperableonly";
+ $sql = "SELECT p.rowid, p.ref, p.price, p.tva_tx, p.default_vat_code, p.recuperableonly";
if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= ", ps.reel";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as ps ON p.rowid = ps.fk_product AND ps.fk_entrepot = ".$conf_fkentrepot;
@@ -56,7 +56,6 @@ switch($action)
}
$result = $db->query($sql);
-
if ($result)
{
// ... et enregistrement dans l'objet
@@ -69,62 +68,90 @@ switch($action)
$ret[$key] = $value;
}
// Here $ret['tva_tx'] is vat rate of product but we want to not use the one into table but found by function
-
+
$productid = $ret['rowid'];
$product = new Product($db);
$product->fetch($productid);
+ $prod = $product;
$thirdpartyid = $_SESSION['CASHDESK_ID_THIRDPARTY'];
$societe = new Societe($db);
$societe->fetch($thirdpartyid);
- $tva_tx = get_default_tva($mysoc,$societe,$productid);
- $tva_npr = get_default_npr($mysoc,$societe,$productid);
+ // Update if prices fields are defined
+ $tva_tx = get_default_tva($mysoc, $societe, $product->id);
+ $tva_npr = get_default_npr($mysoc, $societe, $product->id);
if (empty($tva_tx)) $tva_npr=0;
- dol_syslog('tva_tx='.$tva_tx.'-tva_npr='.$tva_npr);
-
+
+ $pu_ht = $prod->price;
+ $pu_ttc = $prod->price_ttc;
+ $price_min = $prod->price_min;
+ $price_base_type = $prod->price_base_type;
+
+ // multiprix
if (! empty($conf->global->PRODUIT_MULTIPRICES) && ! empty($societe->price_level))
{
- if(isset($product->multiprices[$societe->price_level]))
- {
- $ret['price'] = $product->multiprices[$societe->price_level];
- $ret['price_ttc'] = $product->multiprices_ttc[$societe->price_level];
- // $product->multiprices_min[$societe->price_level];
- // $product->multiprices_min_ttc[$societe->price_level];
- // $product->multiprices_base_type[$societe->price_level];
- if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility
- {
- if (isset($prod->multiprices_tva_tx[$societe->price_level])) $tva_tx=$prod->multiprices_tva_tx[$societe->price_level];
- if (isset($prod->multiprices_recuperableonly[$societe->price_level])) $tva_npr=$prod->multiprices_recuperableonly[$societe->price_level];
- if (empty($tva_tx)) $tva_npr=0;
- }
- }
+ $pu_ht = $prod->multiprices[$societe->price_level];
+ $pu_ttc = $prod->multiprices_ttc[$societe->price_level];
+ $price_min = $prod->multiprices_min[$societe->price_level];
+ $price_base_type = $prod->multiprices_base_type[$societe->price_level];
+ if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility
+ {
+ if (isset($prod->multiprices_tva_tx[$societe->price_level])) $tva_tx=$prod->multiprices_tva_tx[$societe->price_level];
+ if (isset($prod->multiprices_recuperableonly[$societe->price_level])) $tva_npr=$prod->multiprices_recuperableonly[$societe->price_level];
+ }
+ }
+ elseif (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
+ {
+ require_once DOL_DOCUMENT_ROOT . '/product/class/productcustomerprice.class.php';
+
+ $prodcustprice = new Productcustomerprice($db);
+
+ $filter = array('t.fk_product' => $prod->id,'t.fk_soc' => $societe->id);
+
+ $result = $prodcustprice->fetch_all('', '', 0, 0, $filter);
+ if ($result >= 0)
+ {
+ if (count($prodcustprice->lines) > 0)
+ {
+ $pu_ht = price($prodcustprice->lines [0]->price);
+ $pu_ttc = price($prodcustprice->lines [0]->price_ttc);
+ $price_base_type = $prodcustprice->lines [0]->price_base_type;
+ $tva_tx = $prodcustprice->lines [0]->tva_tx;
+ }
+ }
+ else
+ {
+ setEventMessages($prodcustprice->error, $prodcustprice->errors, 'errors');
+ }
+ }
+
+ $tmpvat = price2num(preg_replace('/\s*\(.*\)/', '', $tva_tx));
+ $tmpprodvat = price2num(preg_replace('/\s*\(.*\)/', '', $prod->tva_tx));
+
+ // if price ht is forced (ie: calculated by margin rate and cost price). TODO Why this ?
+ if (! empty($price_ht)) {
+ $pu_ht = price2num($price_ht, 'MU');
+ $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU');
+ }
+ // On reevalue prix selon taux tva car taux tva transaction peut etre different
+ // de ceux du produit par defaut (par exemple si pays different entre vendeur et acheteur).
+ elseif ($tmpvat != $tmpprodvat) {
+ if ($price_base_type != 'HT') {
+ $pu_ht = price2num($pu_ttc / (1 + ($tmpvat / 100)), 'MU');
+ } else {
+ $pu_ttc = price2num($pu_ht * (1 + ($tmpvat / 100)), 'MU');
+ }
}
- $ret['tva_tx'] = $tva_tx;
- $ret['tva_npr'] = $tva_npr;
- //var_dump('tva_tx='.$ret['tva_tx'].'-tva_npr='.$ret['tva_npr'].'-'.$conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL);exit;
-
$obj_facturation->id($ret['rowid']);
$obj_facturation->ref($ret['ref']);
$obj_facturation->stock($ret['reel']);
$obj_facturation->prix($ret['price']);
-
- // Use $ret['tva_tx'] / ret['tva_npr'] to find vat id
- $vatrowid = null;
- $sqlfindvatid = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'c_tva';
- $sqlfindvatid.= ' WHERE taux = '.$ret['tva_tx'].' AND recuperableonly = '.(int) $ret['tva_npr'];
- $sqlfindvatid.= ' AND fk_pays = '.$mysoc->country_id;
- $resqlfindvatid=$db->query($sqlfindvatid);
- if ($resqlfindvatid)
- {
- $obj = $db->fetch_object($resqlfindvatid);
- if ($obj) $vatrowid = $obj->rowid;
- }
- else dol_print_error($db);
-
- dol_syslog("save vatrowid=".$vatrowid);
- $obj_facturation->tva($vatrowid); // Save vat it for next use
+
+
+ $vatrate = $tva_tx;
+ $obj_facturation->vatrate = $vatrate; // Save vat rate (full text vat with code)
// Definition du filtre pour n'afficher que le produit concerne
if ( $_POST['hdnSource'] == 'LISTE' )
@@ -170,21 +197,21 @@ switch($action)
{
$_SESSION["CASHDESK_ID_THIRDPARTY"] = $newthirdpartyid;
}
-
+
$redirection = DOL_URL_ROOT.'/cashdesk/affIndex.php?menutpl=facturation';
- break;
-
+ break;
+
case 'ajout_article': // We have clicked on button "Add product"
if (! empty($obj_facturation->id)) // A product was previously selected and stored in session, so we can add it
{
dol_syslog("facturation_verif save vat ".$_POST['selTva']);
$obj_facturation->qte($_POST['txtQte']);
- $obj_facturation->tva($_POST['selTva']); // Save VAT selected so we can use it for next product
+ $obj_facturation->tva($_POST['selTva']); // id of vat. Saved so we can use it for next product
$obj_facturation->remisePercent($_POST['txtRemise']);
$obj_facturation->ajoutArticle(); // This add an entry into $_SESSION['poscart']
// We update prixTotalTtc
-
+
}
$redirection = DOL_URL_ROOT.'/cashdesk/affIndex.php?menutpl=facturation';
diff --git a/htdocs/cashdesk/tpl/facturation1.tpl.php b/htdocs/cashdesk/tpl/facturation1.tpl.php
index 8f74cf98626..fce4df22c7a 100644
--- a/htdocs/cashdesk/tpl/facturation1.tpl.php
+++ b/htdocs/cashdesk/tpl/facturation1.tpl.php
@@ -125,12 +125,12 @@ $langs->load("cashdesk");
- tva(); // Try to get a previously entered VAT rowid. First time, this will return empty.
+ vatrate; // To get vat rate we just have selected
+
$buyer = new Societe($db);
if ($_SESSION["CASHDESK_ID_THIRDPARTY"] > 0) $buyer->fetch($_SESSION["CASHDESK_ID_THIRDPARTY"]);
-
- echo $form->load_tva('selTva', (isset($_POST["selTva"])?GETPOST("selTva",'alpha',2):-1), $mysoc, $buyer, 0, 0, '', false, -1);
+ echo $form->load_tva('selTva', (isset($_POST["selTva"])?GETPOST("selTva",'alpha',2):$vatrate), $mysoc, $buyer, 0, 0, '', false, -1);
?>
diff --git a/htdocs/cashdesk/validation_verif.php b/htdocs/cashdesk/validation_verif.php
index 5e4ed9b028e..ae5d7185f40 100644
--- a/htdocs/cashdesk/validation_verif.php
+++ b/htdocs/cashdesk/validation_verif.php
@@ -184,6 +184,7 @@ switch ($action)
$tmp = getTaxesFromId($tab_liste[$i]['fk_tva']);
$vat_rate = $tmp['rate'];
$vat_npr = $tmp['npr'];
+ $vat_src_code = $tmp['code'];
$invoiceline=new FactureLigne($db);
$invoiceline->fk_product=$tab_liste[$i]['fk_article'];
@@ -192,15 +193,17 @@ switch ($action)
$invoiceline->remise_percent=$tab_liste[$i]['remise_percent'];
$invoiceline->price=$tab_liste[$i]['price'];
$invoiceline->subprice=$tab_liste[$i]['price'];
-
+
$invoiceline->tva_tx=empty($vat_rate)?0:$vat_rate; // works even if vat_rate is ''
$invoiceline->info_bits=empty($vat_npr)?0:$vat_npr;
-
+ $invoiceline->vat_src_code=$vat_src_code;
+
$invoiceline->total_ht=$tab_liste[$i]['total_ht'];
$invoiceline->total_ttc=$tab_liste[$i]['total_ttc'];
$invoiceline->total_tva=$tab_liste[$i]['total_vat'];
$invoiceline->total_localtax1=$tab_liste[$i]['total_localtax1'];
$invoiceline->total_localtax2=$tab_liste[$i]['total_localtax2'];
+
$invoice->lines[]=$invoiceline;
}
@@ -224,7 +227,7 @@ switch ($action)
{
$warehouseidtodecrease=(isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0);
if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $warehouseidtodecrease=0; // If a particular stock is defined, we disable choice
-
+
$resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), 0);
if ($warehouseidtodecrease > 0)
@@ -264,7 +267,7 @@ switch ($action)
{
$warehouseidtodecrease=(isset($_SESSION["CASHDESK_ID_WAREHOUSE"])?$_SESSION["CASHDESK_ID_WAREHOUSE"]:0);
if (! empty($conf->global->CASHDESK_NO_DECREASE_STOCK)) $warehouseidtodecrease=0; // If a particular stock is defined, we disable choice
-
+
$resultvalid=$invoice->validate($user, $obj_facturation->numInvoice(), 0);
if ($warehouseidtodecrease > 0)
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index fb1ac46cd91..11aa3c95b95 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -1884,7 +1884,7 @@ class Propal extends CommonObject
{
$this->oldcopy= clone $this;
$this->fk_availability = $id;
- $this->availability_id = $availability_id;
+ $this->availability_id = $id;
}
if (! $notrigger && empty($error))
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 880832f80e1..ce441ee213e 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -522,9 +522,12 @@ class Facture extends CommonInvoice
{
$newinvoiceline=$this->lines[$i];
$newinvoiceline->fk_facture=$this->id;
- $newinvoiceline->origin = $this->element; // TODO This seems not used. Here we but origin 'facture' but after
- $newinvoiceline->origin_id = $this->lines[$i]->id; // we put an id of object !
- if ($result >= 0 && ($newinvoiceline->info_bits & 0x01) == 0) // We keep only lines with first bit = 0
+
+ // TODO This seems not used. Here we put origin 'facture' but after, we put an id of object !
+ $newinvoiceline->origin = $this->element;
+ $newinvoiceline->origin_id = $this->lines[$i]->id;
+
+ if ($result >= 0)
{
// Reset fk_parent_line for no child products and special product
if (($newinvoiceline->product_type != 9 && empty($newinvoiceline->fk_parent_line)) || $newinvoiceline->product_type == 9) {
@@ -561,7 +564,7 @@ class Facture extends CommonInvoice
//if (! is_object($line)) $line=json_decode(json_encode($line), FALSE); // convert recursively array into object.
if (! is_object($line)) $line = (object) $line;
- if (($line->info_bits & 0x01) == 0) // We keep only lines with first bit = 0
+ if ($result >= 0)
{
// Reset fk_parent_line for no child products and special product
if (($line->product_type != 9 && empty($line->fk_parent_line)) || $line->product_type == 9) {
diff --git a/htdocs/core/boxes/box_actions.php b/htdocs/core/boxes/box_actions.php
index 0ce87a92c61..f6d9d03dccf 100644
--- a/htdocs/core/boxes/box_actions.php
+++ b/htdocs/core/boxes/box_actions.php
@@ -44,6 +44,21 @@ class box_actions extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param='')
+ {
+ global $user;
+
+ $this->db = $db;
+
+ $this->hidden = ! ($user->rights->agenda->myactions->read);
+ }
+
/**
* Load data for box to show them later
*
@@ -173,8 +188,8 @@ class box_actions extends ModeleBoxes
function showBox($head = null, $contents = null, $nooutput=0)
{
global $langs, $conf;
- parent::showBox($this->info_box_head, $this->info_box_contents);
- $out='';
+ $out = parent::showBox($this->info_box_head, $this->info_box_contents);
+
if (! empty($conf->global->SHOW_DIALOG_HOMEPAGE))
{
$actioncejour=false;
diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php
index 96a451f70f8..8d8b2962688 100644
--- a/htdocs/core/boxes/box_activity.php
+++ b/htdocs/core/boxes/box_activity.php
@@ -51,11 +51,17 @@ class box_activity extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $conf, $user;
$this->db=$db;
+
// FIXME: Pb into some status
- $this->enabled=$conf->global->MAIN_FEATURES_LEVEL; // Not enabled by default due to bugs (see previous comments)
+ $this->enabled=($conf->global->MAIN_FEATURES_LEVEL); // Not enabled by default due to bugs (see previous comments)
+
+ $this->hidden= ! ((! empty($conf->facture->enabled) && $user->rights->facture->lire)
+ || (! empty($conf->commande->enabled) && $user->rights->commande->lire)
+ || (! empty($conf->propal->enabled) && $user->rights->propale->lire)
+ );
}
/**
@@ -352,7 +358,7 @@ class box_activity extends ModeleBoxes
}
// list the summary of the propals
- if (! empty($conf->propal->enabled) && $user->rights->propal->lire)
+ if (! empty($conf->propal->enabled) && $user->rights->propale->lire)
{
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
$propalstatic=new Propal($db);
@@ -456,10 +462,10 @@ class box_activity extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_bookmarks.php b/htdocs/core/boxes/box_bookmarks.php
index 653922c4cd2..34cf15497c6 100644
--- a/htdocs/core/boxes/box_bookmarks.php
+++ b/htdocs/core/boxes/box_bookmarks.php
@@ -40,6 +40,21 @@ class box_bookmarks extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->bookmark->lire);
+ }
+
/**
* Load data for box to show them later
*
@@ -136,11 +151,11 @@ class box_bookmarks extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_clients.php b/htdocs/core/boxes/box_clients.php
index 5e6f50f5b88..a293b5166a2 100644
--- a/htdocs/core/boxes/box_clients.php
+++ b/htdocs/core/boxes/box_clients.php
@@ -58,6 +58,8 @@ class box_clients extends ModeleBoxes
// disable box for such cases
if (! empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $this->enabled=0; // disabled by this option
+
+ $this->hidden = ! ($user->rights->societe->lire && empty($user->socid));
}
/**
@@ -160,11 +162,11 @@ class box_clients extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_commandes.php b/htdocs/core/boxes/box_commandes.php
index c7c6bbb92d3..9e1e89d60fc 100644
--- a/htdocs/core/boxes/box_commandes.php
+++ b/htdocs/core/boxes/box_commandes.php
@@ -44,6 +44,21 @@ class box_commandes extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->commande->lire);
+ }
+
/**
* Load data for box to show them later
*
@@ -177,11 +192,11 @@ class box_commandes extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_comptes.php b/htdocs/core/boxes/box_comptes.php
index 7d08a643f87..f68393df6a5 100644
--- a/htdocs/core/boxes/box_comptes.php
+++ b/htdocs/core/boxes/box_comptes.php
@@ -61,6 +61,8 @@ class box_comptes extends ModeleBoxes
// disable module for such cases
$listofmodulesforexternal=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
if (! in_array('banque',$listofmodulesforexternal) && ! empty($user->societe_id)) $this->enabled=0; // disabled for external users
+
+ $this->hidden = ! ($user->rights->banque->lire);
}
/**
@@ -171,11 +173,11 @@ class box_comptes extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_contacts.php b/htdocs/core/boxes/box_contacts.php
index 63b617ffe62..a67d2c3ac02 100644
--- a/htdocs/core/boxes/box_contacts.php
+++ b/htdocs/core/boxes/box_contacts.php
@@ -45,6 +45,21 @@ class box_contacts extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->societe->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -164,11 +179,11 @@ class box_contacts extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_contracts.php b/htdocs/core/boxes/box_contracts.php
index 197425b9a51..59db96b08aa 100644
--- a/htdocs/core/boxes/box_contracts.php
+++ b/htdocs/core/boxes/box_contracts.php
@@ -43,6 +43,21 @@ class box_contracts extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->contrat->lire);
+ }
+
/**
* Load data for box to show them later
*
@@ -160,11 +175,11 @@ class box_contracts extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_external_rss.php b/htdocs/core/boxes/box_external_rss.php
index 14e542ff101..264f05b1f03 100644
--- a/htdocs/core/boxes/box_external_rss.php
+++ b/htdocs/core/boxes/box_external_rss.php
@@ -188,11 +188,11 @@ class box_external_rss extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_factures.php b/htdocs/core/boxes/box_factures.php
index cf1d70531b3..a5da051d9d7 100644
--- a/htdocs/core/boxes/box_factures.php
+++ b/htdocs/core/boxes/box_factures.php
@@ -42,6 +42,21 @@ class box_factures extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->facture->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -181,11 +196,11 @@ class box_factures extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_factures_fourn.php b/htdocs/core/boxes/box_factures_fourn.php
index 9869901c7ab..0dd0ceb22ba 100644
--- a/htdocs/core/boxes/box_factures_fourn.php
+++ b/htdocs/core/boxes/box_factures_fourn.php
@@ -43,6 +43,21 @@ class box_factures_fourn extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->fournisseur->facture->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -190,11 +205,11 @@ class box_factures_fourn extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_factures_fourn_imp.php b/htdocs/core/boxes/box_factures_fourn_imp.php
index 11361b0aa44..1f894be3309 100644
--- a/htdocs/core/boxes/box_factures_fourn_imp.php
+++ b/htdocs/core/boxes/box_factures_fourn_imp.php
@@ -42,6 +42,21 @@ class box_factures_fourn_imp extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->fournisseur->facture->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -181,11 +196,11 @@ class box_factures_fourn_imp extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php
index bba23671c47..ea483e223c1 100644
--- a/htdocs/core/boxes/box_factures_imp.php
+++ b/htdocs/core/boxes/box_factures_imp.php
@@ -45,6 +45,21 @@ class box_factures_imp extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->facture->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -184,11 +199,11 @@ class box_factures_imp extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_ficheinter.php b/htdocs/core/boxes/box_ficheinter.php
index a76715c9474..f62745437a6 100644
--- a/htdocs/core/boxes/box_ficheinter.php
+++ b/htdocs/core/boxes/box_ficheinter.php
@@ -43,6 +43,21 @@ class box_ficheinter extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->ficheinter->lire);
+ }
+
/**
* Load data for box to show them later
*
@@ -147,11 +162,11 @@ class box_ficheinter extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_fournisseurs.php b/htdocs/core/boxes/box_fournisseurs.php
index 6e11c67c51f..32ffd1f5618 100644
--- a/htdocs/core/boxes/box_fournisseurs.php
+++ b/htdocs/core/boxes/box_fournisseurs.php
@@ -43,6 +43,21 @@ class box_fournisseurs extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->societe->lire && empty($user->socid));
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -140,11 +155,11 @@ class box_fournisseurs extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_goodcustomers.php b/htdocs/core/boxes/box_goodcustomers.php
index 8a7681fb2b2..8e4ec988144 100644
--- a/htdocs/core/boxes/box_goodcustomers.php
+++ b/htdocs/core/boxes/box_goodcustomers.php
@@ -60,6 +60,8 @@ class box_goodcustomers extends ModeleBoxes
// disable box for such cases
if (! empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $this->enabled=0; // disabled by this option
if (empty($conf->global->MAIN_BOX_ENABLE_BEST_CUSTOMERS)) $this->enabled=0; // not enabled by default. Very slow on large database
+
+ $this->hidden = ! ($user->rights->societe->lire);
}
/**
@@ -162,11 +164,11 @@ class box_goodcustomers extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_graph_invoices_permonth.php b/htdocs/core/boxes/box_graph_invoices_permonth.php
index 1b90aae701a..639db28637d 100644
--- a/htdocs/core/boxes/box_graph_invoices_permonth.php
+++ b/htdocs/core/boxes/box_graph_invoices_permonth.php
@@ -47,9 +47,11 @@ class box_graph_invoices_permonth extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $user;
$this->db=$db;
+
+ $this->hidden = ! ($user->rights->facture->lire);
}
/**
@@ -268,11 +270,11 @@ class box_graph_invoices_permonth extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php b/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php
index 55866288ef2..ca26f1392a8 100644
--- a/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php
+++ b/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php
@@ -47,9 +47,11 @@ class box_graph_invoices_supplier_permonth extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $user;
$this->db=$db;
+
+ $this->hidden = ! ($user->rights->fournisseur->facture->lire);
}
/**
@@ -267,11 +269,11 @@ class box_graph_invoices_supplier_permonth extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_graph_orders_permonth.php b/htdocs/core/boxes/box_graph_orders_permonth.php
index fcc98d368f5..d192805782e 100644
--- a/htdocs/core/boxes/box_graph_orders_permonth.php
+++ b/htdocs/core/boxes/box_graph_orders_permonth.php
@@ -47,9 +47,11 @@ class box_graph_orders_permonth extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $user;
$this->db=$db;
+
+ $this->hidden = ! ($user->rights->commande->lire);
}
/**
@@ -266,11 +268,11 @@ class box_graph_orders_permonth extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_graph_orders_supplier_permonth.php b/htdocs/core/boxes/box_graph_orders_supplier_permonth.php
index b259cf48604..18b85b2ae80 100644
--- a/htdocs/core/boxes/box_graph_orders_supplier_permonth.php
+++ b/htdocs/core/boxes/box_graph_orders_supplier_permonth.php
@@ -47,9 +47,11 @@ class box_graph_orders_supplier_permonth extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $user;
$this->db=$db;
+
+ $this->hidden = ! ($user->rights->fournisseur->commande->lire);
}
/**
@@ -265,11 +267,11 @@ class box_graph_orders_supplier_permonth extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_graph_product_distribution.php b/htdocs/core/boxes/box_graph_product_distribution.php
index 6c178e0c989..bac56d8006b 100644
--- a/htdocs/core/boxes/box_graph_product_distribution.php
+++ b/htdocs/core/boxes/box_graph_product_distribution.php
@@ -48,9 +48,15 @@ class box_graph_product_distribution extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $user, $conf;
$this->db=$db;
+
+ $this->hidden = ! (
+ (! empty($conf->facture->enabled) && ! empty($user->rights->facture->lire))
+ || (! empty($conf->commande->enabled) && ! empty($user->rights->commande->lire))
+ || (! empty($conf->propal->enabled) && ! empty($user->rights->propale->lire))
+ );
}
/**
@@ -93,7 +99,7 @@ class box_graph_product_distribution extends ModeleBoxes
}
if (empty($showinvoicenb) && empty($showpropalnb) && empty($showordernb)) { $showpropalnb=1; $showinvoicenb=1; $showordernb=1; }
if (empty($conf->facture->enabled) || empty($user->rights->facture->lire)) $showinvoicenb=0;
- if (empty($conf->propal->enabled) || empty($user->rights->propal->lire)) $showpropalnb=0;
+ if (empty($conf->propal->enabled) || empty($user->rights->propale->lire)) $showpropalnb=0;
if (empty($conf->commande->enabled) || empty($user->rights->commande->lire)) $showordernb=0;
$nowarray=dol_getdate(dol_now(),true);
@@ -187,7 +193,7 @@ class box_graph_product_distribution extends ModeleBoxes
}
}
- if (! empty($conf->propal->enabled) && ! empty($user->rights->propal->lire))
+ if (! empty($conf->propal->enabled) && ! empty($user->rights->propale->lire))
{
// Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...)
if ($showpropalnb)
@@ -338,7 +344,7 @@ class box_graph_product_distribution extends ModeleBoxes
$stringtoshow.=' '.$langs->trans("ForCustomersInvoices");
$stringtoshow.=' ';
}
- if (! empty($conf->propal->enabled) || ! empty($user->rights->propal->lire))
+ if (! empty($conf->propal->enabled) || ! empty($user->rights->propale->lire))
{
$stringtoshow.=' '.$langs->trans("ForProposals");
$stringtoshow.=' ';
@@ -399,11 +405,11 @@ class box_graph_product_distribution extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_graph_propales_permonth.php b/htdocs/core/boxes/box_graph_propales_permonth.php
index 0ad485a115d..a0a15cae59a 100644
--- a/htdocs/core/boxes/box_graph_propales_permonth.php
+++ b/htdocs/core/boxes/box_graph_propales_permonth.php
@@ -47,9 +47,11 @@ class box_graph_propales_permonth extends ModeleBoxes
*/
function __construct($db,$param)
{
- global $conf;
+ global $user;
$this->db=$db;
+
+ $this->hidden=! ($user->rights->propale->lire);
}
/**
@@ -87,7 +89,7 @@ class box_graph_propales_permonth extends ModeleBoxes
if ($user->societe_id) $socid=$user->societe_id;
if (! $user->rights->societe->client->voir || $socid) $prefix.='private-'.$user->id.'-'; // If user has no permission to see all, output dir is specific to user
- if ($user->rights->propal->lire)
+ if ($user->rights->propale->lire)
{
$param_year='DOLUSERCOOKIE_box_'.$this->boxcode.'_year';
$param_shownb='DOLUSERCOOKIE_box_'.$this->boxcode.'_shownb';
@@ -267,11 +269,11 @@ class box_graph_propales_permonth extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_members.php b/htdocs/core/boxes/box_members.php
index 03780eb366d..bbf7cd8ad48 100644
--- a/htdocs/core/boxes/box_members.php
+++ b/htdocs/core/boxes/box_members.php
@@ -60,6 +60,8 @@ class box_members extends ModeleBoxes
// disable module for such cases
$listofmodulesforexternal=explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL);
if (! in_array('adherent',$listofmodulesforexternal) && ! empty($user->societe_id)) $this->enabled=0; // disabled for external users
+
+ $this->hidden=! ($user->rights->adherent->lire);
}
/**
@@ -170,11 +172,11 @@ class box_members extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_produits.php b/htdocs/core/boxes/box_produits.php
index f1fa5a84d5d..a6727d4bb06 100644
--- a/htdocs/core/boxes/box_produits.php
+++ b/htdocs/core/boxes/box_produits.php
@@ -45,6 +45,21 @@ class box_produits extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->produit->lire || $user->rights->service->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -72,7 +87,7 @@ class box_produits extends ModeleBoxes
// Add where from hooks
if (is_object($hookmanager))
{
- $parameters=array();
+ $parameters=array('boxproductlist'=>1);
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
$sql.=$hookmanager->resPrint;
}
@@ -162,12 +177,14 @@ class box_produits extends ModeleBoxes
$this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"',
- 'text' => $productstatic->LibStatut($objp->tosell,3,0),
+ 'text' => ''.$productstatic->LibStatut($objp->tosell,3,0).'',
+ 'asis' => 1
);
$this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"',
- 'text' => $productstatic->LibStatut($objp->tobuy,3,1),
+ 'text' => ''.$productstatic->LibStatut($objp->tobuy,3,1).'',
+ 'asis' => 1
);
$line++;
@@ -200,11 +217,11 @@ class box_produits extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php
index 2f323fc5c4b..43297d6954a 100644
--- a/htdocs/core/boxes/box_produits_alerte_stock.php
+++ b/htdocs/core/boxes/box_produits_alerte_stock.php
@@ -47,6 +47,21 @@ class box_produits_alerte_stock extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param='')
+ {
+ global $user;
+
+ $this->db = $db;
+
+ $this->hidden = ! (($user->rights->produit->lire || $user->rights->service->lire) && $user->rights->stock->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -64,7 +79,7 @@ class box_produits_alerte_stock extends ModeleBoxes
$this->info_box_head = array('text' => $langs->trans("BoxTitleProductsAlertStock",$max));
- if ($user->rights->produit->lire || $user->rights->service->lire)
+ if (($user->rights->produit->lire || $user->rights->service->lire) && $user->rights->stock->lire)
{
$sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte, p.entity,";
$sql.= " SUM(".$db->ifsql("s.reel IS NULL","0","s.reel").") as total_stock";
@@ -77,7 +92,7 @@ class box_produits_alerte_stock extends ModeleBoxes
// Add where from hooks
if (is_object($hookmanager))
{
- $parameters=array();
+ $parameters=array('boxproductalertstocklist'=>1);
$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook
$sql.=$hookmanager->resPrint;
}
@@ -164,15 +179,22 @@ class box_produits_alerte_stock extends ModeleBoxes
'text' => $price_base_type,
);
- $this->info_box_contents[$line][] = array('td' => 'align="center"',
+ $this->info_box_contents[$line][] = array(
+ 'td' => 'align="center"',
'text' => $objp->total_stock . ' / '.$objp->seuil_stock_alerte,
'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit", $objp->seuil_stock_alerte)));
- $this->info_box_contents[$line][] = array('td' => 'align="right" width="18"',
- 'text' => $productstatic->LibStatut($objp->tosell,3,0));
+ $this->info_box_contents[$line][] = array(
+ 'td' => 'align="right" width="18"',
+ 'text' => ''.$productstatic->LibStatut($objp->tosell,3,0).'',
+ 'asis' => 1
+ );
- $this->info_box_contents[$line][] = array('td' => 'align="right" width="18"',
- 'text' => $productstatic->LibStatut($objp->tobuy,3,1));
+ $this->info_box_contents[$line][] = array(
+ 'td' => 'align="right" width="18"',
+ 'text' => ''.$productstatic->LibStatut($objp->tobuy,3,0).'',
+ 'asis' => 1
+ );
$line++;
}
@@ -207,11 +229,11 @@ class box_produits_alerte_stock extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_project.php b/htdocs/core/boxes/box_project.php
index 80c7b24249b..9422f228530 100644
--- a/htdocs/core/boxes/box_project.php
+++ b/htdocs/core/boxes/box_project.php
@@ -48,12 +48,14 @@ class box_project extends ModeleBoxes
*/
function __construct($db,$param='')
{
- global $langs;
+ global $user, $langs;
$langs->load("boxes");
$langs->load("projects");
$this->db = $db;
$this->boxlabel="Projects";
+
+ $this->hidden=! ($user->rights->projet->lire);
}
/**
@@ -77,16 +79,16 @@ class box_project extends ModeleBoxes
// list the summary of the orders
if ($user->rights->projet->lire) {
-
+
include_once(DOL_DOCUMENT_ROOT.'/projet/class/project.class.php');
$projectstatic = new Project($this->db);
-
+
$socid=$user->societe_id;
-
+
// Get list of project id allowed to user (in a string list separated by coma)
$projectsListId='';
if (! $user->rights->projet->all->lire) $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1,$socid);
-
+
$sql = "SELECT p.rowid, p.ref, p.title, p.fk_statut, p.public";
$sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
if($user->socid) $sql.= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid=p.fk_soc";
@@ -96,7 +98,7 @@ class box_project extends ModeleBoxes
$sql.= " AND p.fk_statut = 1"; // Seulement les projets ouverts
if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")";
if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id.") OR (s.rowid IS NULL))";
-
+
$sql.= " ORDER BY p.datec DESC";
//$sql.= $db->plimit($max, 0);
@@ -156,7 +158,7 @@ class box_project extends ModeleBoxes
}
if ($max < $num)
{
- $this->info_box_contents[$i][0] = array('td' => 'colspan="5"', 'text' => '...');
+ $this->info_box_contents[$i][0] = array('td' => 'colspan="5"', 'text' => '...');
$i++;
}
}
@@ -195,11 +197,11 @@ class box_project extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_propales.php b/htdocs/core/boxes/box_propales.php
index 60bc627005a..a94ee0c1f08 100644
--- a/htdocs/core/boxes/box_propales.php
+++ b/htdocs/core/boxes/box_propales.php
@@ -44,6 +44,21 @@ class box_propales extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->propale->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -167,11 +182,11 @@ class box_propales extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_prospect.php b/htdocs/core/boxes/box_prospect.php
index 7d735136326..3186d0d30ce 100644
--- a/htdocs/core/boxes/box_prospect.php
+++ b/htdocs/core/boxes/box_prospect.php
@@ -60,6 +60,8 @@ class box_prospect extends ModeleBoxes
// disable box for such cases
if (! empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) $this->enabled=0; // disabled by this option
+
+ $this->hidden=! ($user->rights->societe->lire && empty($user->socid));
}
/**
@@ -168,11 +170,11 @@ class box_prospect extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php
index b1793a6ca41..3082b787e15 100644
--- a/htdocs/core/boxes/box_services_contracts.php
+++ b/htdocs/core/boxes/box_services_contracts.php
@@ -43,6 +43,21 @@ class box_services_contracts extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->service->lire && $user->rights->contrat->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -175,11 +190,11 @@ class box_services_contracts extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_services_expired.php b/htdocs/core/boxes/box_services_expired.php
index da1d42af408..4f3a2817549 100644
--- a/htdocs/core/boxes/box_services_expired.php
+++ b/htdocs/core/boxes/box_services_expired.php
@@ -42,6 +42,21 @@ class box_services_expired extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->contrat->lire);
+ }
+
/**
* Load data for box to show them later
*
@@ -153,11 +168,11 @@ class box_services_expired extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_supplier_orders.php b/htdocs/core/boxes/box_supplier_orders.php
index 83a34c2c0e5..34734d9dd5a 100644
--- a/htdocs/core/boxes/box_supplier_orders.php
+++ b/htdocs/core/boxes/box_supplier_orders.php
@@ -43,6 +43,21 @@ class box_supplier_orders extends ModeleBoxes
var $info_box_contents = array();
+ /**
+ * Constructor
+ *
+ * @param DoliDB $db Database handler
+ * @param string $param More parameters
+ */
+ function __construct($db,$param)
+ {
+ global $user;
+
+ $this->db=$db;
+
+ $this->hidden=! ($user->rights->fournisseur->commande->lire);
+ }
+
/**
* Load data into info_box_contents array to show array later.
*
@@ -172,11 +187,11 @@ class box_supplier_orders extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/box_task.php b/htdocs/core/boxes/box_task.php
index ed02e2fc6eb..3a665243073 100644
--- a/htdocs/core/boxes/box_task.php
+++ b/htdocs/core/boxes/box_task.php
@@ -42,6 +42,7 @@ class box_task extends ModeleBoxes
var $info_box_head = array();
var $info_box_contents = array();
+
/**
* Constructor
*
@@ -50,11 +51,13 @@ class box_task extends ModeleBoxes
*/
function __construct($db,$param='')
{
- global $langs;
+ global $user, $langs;
$langs->load("boxes");
$langs->load("projects");
$this->boxlabel="Tasks";
$this->db = $db;
+
+ $this->hidden = ! ($user->rights->projet->lire);
}
/**
@@ -138,10 +141,10 @@ class box_task extends ModeleBoxes
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
* @param int $nooutput No print, only return string
- * @return void
+ * @return string
*/
function showBox($head = null, $contents = null, $nooutput=0)
{
- parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
+ return parent::showBox($this->info_box_head, $this->info_box_contents, $nooutput);
}
}
diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php
index f5fa32e590d..662e0b262bc 100644
--- a/htdocs/core/boxes/modules_boxes.php
+++ b/htdocs/core/boxes/modules_boxes.php
@@ -49,10 +49,15 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
public $max = 5;
/**
- * @var int Status
+ * @var int Condition to have widget enabled
*/
public $enabled=1;
+ /**
+ * @var int Condition to have widget visible (in most cases, permissions)
+ */
+ public $hidden=0;
+
/**
* @var int Box definition database ID
*/
@@ -168,29 +173,29 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
}
}
-
+
/**
* Standard method to get content of a box
*
* @param array $head Array with properties of box title
* @param array $contents Array with properties of box lines
*
- * @return string
+ * @return string
*/
function outputBox($head = null, $contents = null)
{
global $langs, $user, $conf;
-
+
// Trick to get result into a var from a function that makes print instead of return
// TODO Replace ob_start with param nooutput=1 into showBox
ob_start();
$result = $this->showBox($head, $contents);
$output = ob_get_contents();
ob_end_clean();
-
+
return $output;
}
-
+
/**
* Standard method to show a box (usage by boxes not mandatory, a box can still use its own showBox function)
*
@@ -203,6 +208,8 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
{
global $langs, $user, $conf;
+ if (! empty($this->hidden)) return '\n\n'; // Nothing done if hidden (for example when user has no permission)
+
require_once DOL_DOCUMENT_ROOT .'/core/lib/files.lib.php';
$MAXLENGTHBOX=60; // Mettre 0 pour pas de limite
@@ -363,13 +370,13 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
$out = "";
$out.= dol_readcachefile($cachedir, $filename);
}
-
+
if ($nooutput) return $out;
else print $out;
-
+
return '';
}
-
+
}
diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php
index 2ee6b18a44f..c5344ab467a 100644
--- a/htdocs/core/class/html.formother.class.php
+++ b/htdocs/core/class/html.formother.class.php
@@ -322,7 +322,7 @@ class FormOther
{
dol_syslog(__METHOD__ . ': using numeric value for parameter type is deprecated. Use string code instead.', LOG_WARNING);
}
-
+
// Load list of "categories"
$static_categs = new Categorie($this->db);
$tab_categs = $static_categs->get_full_arbo($type);
@@ -411,7 +411,7 @@ class FormOther
$sql_usr.= " WHERE u2.entity IN (0,".$conf->entity.")";
$sql_usr.= " AND u2.rowid = sc.fk_user AND sc.fk_soc=".$user->societe_id;
}
- $sql_usr.= " ORDER BY u.statut DESC, lastname ASC";
+ $sql_usr.= " ORDER BY statut DESC, lastname ASC"; // Do not use 'ORDER BY u.statut' here, not compatible with the UNION.
//print $sql_usr;exit;
$resql_usr = $this->db->query($sql_usr);
@@ -623,12 +623,12 @@ class FormOther
$b = hexdec($hexb);
}
$bright = (max($r, $g, $b) + min($r, $g, $b)) / 510.0; // HSL algorithm
- if ($bright > 0.6) $textcolor='000';
+ if ($bright > 0.6) $textcolor='000';
}
-
+
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
$color = colorArrayToHex(colorStringToArray($color,array()),'');
-
+
if ($color) print '';
else print $textifnotdefined;
}
@@ -991,7 +991,7 @@ class FormOther
* Class 'Form' must be known.
*
* @param User $user Object User
- * @param String $areacode Code of area for pages (0=value for Home page)
+ * @param String $areacode Code of area for pages ('0'=value for Home page)
* @return array array('selectboxlist'=>, 'boxactivated'=>, 'boxlista'=>, 'boxlistb'=>)
*/
static function getBoxesArea($user,$areacode)
@@ -1004,16 +1004,16 @@ class FormOther
// $boxactivated will be array of boxes enabled into global setup
// $boxidactivatedforuser will be array of boxes choosed by user
-
+
$selectboxlist='';
- $boxactivated=InfoBox::listBoxes($db,'activated',$areacode,(empty($user->conf->$confuserzone)?null:$user)); // Search boxes of common+user (or common only if user has no specific setup)
-
+ $boxactivated=InfoBox::listBoxes($db, 'activated', $areacode, (empty($user->conf->$confuserzone)?null:$user), array(), 0); // Search boxes of common+user (or common only if user has no specific setup)
+
$boxidactivatedforuser=array();
foreach($boxactivated as $box)
{
if (empty($user->conf->$confuserzone) || $box->fk_user == $user->id) $boxidactivatedforuser[$box->id]=$box->id; // We keep only boxes to show for user
}
-
+
// Define selectboxlist
$arrayboxtoactivatelabel=array();
if (! empty($user->conf->$confuserzone))
diff --git a/htdocs/core/class/infobox.class.php b/htdocs/core/class/infobox.class.php
index e77a1196530..4125aa89eb9 100644
--- a/htdocs/core/class/infobox.class.php
+++ b/htdocs/core/class/infobox.class.php
@@ -45,9 +45,10 @@ class InfoBox
* @param string $zone Name or area (-1 for all, 0 for Homepage, 1 for xxx, ...)
* @param User|null $user Object user to filter
* @param array $excludelist Array of box id (box.box_id = boxes_def.rowid) to exclude
+ * @param int $includehidden Include also hidden boxes
* @return array Array of boxes
*/
- static function listBoxes($db, $mode, $zone, $user=null, $excludelist=array())
+ static function listBoxes($db, $mode, $zone, $user=null, $excludelist=array(), $includehidden=1)
{
global $conf;
@@ -155,7 +156,7 @@ class InfoBox
//print '=>'.$boxname.'-enabled='.$enabled.' ';
//print 'xx module='.$module.' enabled='.$enabled;
- if ($enabled) $boxes[]=$box;
+ if ($enabled && ($includehidden || empty($box->hidden))) $boxes[]=$box;
else unset($box);
}
else
diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php
index 06df150d983..60b970fffce 100644
--- a/htdocs/core/lib/files.lib.php
+++ b/htdocs/core/lib/files.lib.php
@@ -1777,11 +1777,12 @@ function dol_compress_dir($inputdir, $outputfile, $mode="zip")
* @param string $regexfilter Regex filter to restrict list. This regex value must be escaped for '/', since this char is used for preg_match function
* @param array $excludefilter Array of Regex for exclude filter (example: array('(\.meta|_preview.*\.png)$','^\.')). This regex value must be escaped for '/', since this char is used for preg_match function
* @param int $nohook Disable all hooks
+ * @param int $mode 0=Return array minimum keys loaded (faster), 1=Force all keys like date and size to be loaded (slower), 2=Force load of date only, 3=Force load of size only
* @return string Full path to most recent file
*/
-function dol_most_recent_file($dir,$regexfilter='',$excludefilter=array('(\.meta|_preview.*\.png)$','^\.'),$nohook=false)
+function dol_most_recent_file($dir,$regexfilter='',$excludefilter=array('(\.meta|_preview.*\.png)$','^\.'),$nohook=false,$mode='')
{
- $tmparray=dol_dir_list($dir,'files',0,$regexfilter,$excludefilter,'date',SORT_DESC,'',$nohook);
+ $tmparray=dol_dir_list($dir,'files',0,$regexfilter,$excludefilter,'date',SORT_DESC,$mode,$nohook);
return $tmparray[0];
}
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index a09ebd6fe7d..bc18f0984de 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -1295,14 +1295,14 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r
if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
$morehtmlstatus.=ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell');
} else {
- $morehtmlstatus.=$object->getLibStatut(5,0);
+ $morehtmlstatus.=''.$object->getLibStatut(5,0).'';
}
$morehtmlstatus.=' ';
//$morehtmlstatus.=$langs->trans("Status").' ('.$langs->trans("Buy").') ';
if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
$morehtmlstatus.=ajax_object_onoff($object, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy');
} else {
- $morehtmlstatus.=$object->getLibStatut(5,1);
+ $morehtmlstatus.=''.$object->getLibStatut(5,1).'';
}
}
elseif (in_array($object->element, array('facture', 'invoice', 'invoice_supplier', 'chargesociales', 'loan')))
diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php
index 2a2b224194f..9a9e78513c3 100644
--- a/htdocs/core/lib/security.lib.php
+++ b/htdocs/core/lib/security.lib.php
@@ -147,7 +147,9 @@ function restrictedArea($user, $features, $objectid=0, $tableandshare='', $featu
$readok=1; $nbko=0;
foreach ($featuresarray as $feature) // first we check nb of test ko
{
- if (! empty($user->societe_id) && ! empty($conf->global->MAIN_MODULES_FOR_EXTERNAL) && ! in_array($feature,$listofmodules)) // If limits on modules for external users, module must be into list of modules for external users
+ $featureforlistofmodule=$feature;
+ if ($featureforlistofmodule == 'produit') $featureforlistofmodule='product';
+ if (! empty($user->societe_id) && ! empty($conf->global->MAIN_MODULES_FOR_EXTERNAL) && ! in_array($featureforlistofmodule,$listofmodules)) // If limits on modules for external users, module must be into list of modules for external users
{
$readok=0; $nbko++;
continue;
diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
index 6efe3ead81c..c5aabf27bf9 100644
--- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
+++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
@@ -167,9 +167,17 @@ class pdf_aurore extends ModelePDFSupplierProposal
$objphoto = new Product($this->db);
$objphoto->fetch($object->lines[$i]->fk_product);
- $pdir = get_exdir($object->lines[$i]->fk_product,2,0,0,$objphoto,'product') . $object->lines[$i]->fk_product ."/photos/";
- $dir = $conf->product->dir_output.'/'.$pdir;
-
+ if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO))
+ {
+ $pdir = get_exdir($object->lines[$i]->fk_product,2,0,0,$objphoto,'product') . $object->lines[$i]->fk_product ."/photos/";
+ $dir = $conf->product->dir_output.'/'.$pdir;
+ }
+ else
+ {
+ $pdir = get_exdir(0,2,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/';
+ $dir = $conf->product->dir_output.'/'.$pdir;
+ }
+
$realpath='';
foreach ($objphoto->liste_photos($dir,1) as $key => $obj)
{
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index efc64d84396..ec2e6f782bf 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -73,7 +73,12 @@ $ref=GETPOST('ref','alpha');
// Security check
$socid='';
if ($user->societe_id) $socid=$user->societe_id;
-$result=restrictedArea($user, $origin, $origin_id);
+
+if ($origin == 'expedition') $result=restrictedArea($user, $origin, $id);
+else {
+ $result=restrictedArea($user, 'expedition');
+ if (empty($user->rights->{$origin}->lire) && empty($user->rights->{$origin}->read)) accessforbidden();
+}
$action = GETPOST('action','alpha');
$confirm = GETPOST('confirm','alpha');
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 15934a32f86..74f3698e728 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -587,7 +587,7 @@ if (! defined('NOLOGIN'))
// We are already into an authenticated session
$login=$_SESSION["dol_login"];
$entity=$_SESSION["dol_entity"];
- dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login." _SESSION['dol_entity']=".$entity, LOG_DEBUG);
+ dol_syslog("- This is an already logged session. _SESSION['dol_login']=".$login." _SESSION['dol_entity']=".$entity, LOG_DEBUG);
$resultFetchUser=$user->fetch('', $login, '', 1, ($entity > 0 ? $entity : -1));
if ($resultFetchUser <= 0)
@@ -1083,6 +1083,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
//$ext='';
//if (! empty($conf->dol_use_jmobile)) $ext='version='.urlencode(DOL_VERSION);
$ext='version='.urlencode(DOL_VERSION);
+
if (GETPOST('version','int')) $ext='version='.GETPOST('version','int'); // usefull to force no cache on css/js
if (GETPOST('testmenuhider','int') || ! empty($conf->global->MAIN_TESTMENUHIDER)) $ext.='&testmenuhider='.(GETPOST('testmenuhider','int')?GETPOST('testmenuhider','int'):$conf->global->MAIN_TESTMENUHIDER);
diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php
index 8e4892678e5..159ee6c272e 100644
--- a/htdocs/product/ajax/products.php
+++ b/htdocs/product/ajax/products.php
@@ -160,7 +160,7 @@ if (! empty($action) && $action == 'fetch' && ! empty($id))
}
echo json_encode($outjson);
-}
+}
else
{
require_once DOL_DOCUMENT_ROOT . '/core/class/html.form.class.php';
@@ -171,17 +171,21 @@ else
top_httphead();
if (empty($htmlname))
- return;
+ {
+ print json_encode(array());
+ return;
+ }
$match = preg_grep('/(' . $htmlname . '[0-9]+)/', array_keys($_GET));
sort($match);
$idprod = (! empty($match[0]) ? $match[0] : '');
-
- if (! $htmlname && (! $idprod || ! GETPOST($idprod,'alpha')))
- return;
- // When used from jQuery, the search term is added as GET param "term".
+ if (GETPOST($htmlname,'alpha') == '' && (! $idprod || ! GETPOST($idprod,'alpha')))
+ print json_encode(array());
+ return;
+
+ // When used from jQuery, the search term is added as GET param "term".
$searchkey = (($idprod && GETPOST($idprod,'alpha')) ? GETPOST($idprod,'alpha') : (GETPOST($htmlname, 'alpha') ? GETPOST($htmlname, 'alpha') : ''));
$form = new Form($db);
diff --git a/htdocs/product/card.php b/htdocs/product/card.php
index dc75ee54bb5..ed4439d7288 100644
--- a/htdocs/product/card.php
+++ b/htdocs/product/card.php
@@ -1457,7 +1457,10 @@ else
$linkback = ''.$langs->trans("BackToList").'';
$object->next_prev_filter=" fk_product_type = ".$object->type;
- dol_banner_tab($object, 'ref', $linkback, ($user->societe_id?0:1), 'ref');
+ $shownav = 1;
+ if ($user->societe_id && ! in_array('product', explode(',',$conf->global->MAIN_MODULES_FOR_EXTERNAL))) $shownav=0;
+
+ dol_banner_tab($object, 'ref', $linkback, $shownav, 'ref');
print '