diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index aa4dc5710b48f..14b6047368793 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -2136,11 +2136,12 @@ function load_stats_propale($socid=0) /** * Charge tableau des stats commande client pour le produit/service * - * @param int $socid Id societe pour filtrer sur une societe - * @param int $filtrestatut Id statut pour filtrer sur un statut - * @return array Array of stats (nb=nb of order, qty=qty ordered) + * @param int $socid Id societe pour filtrer sur une societe + * @param string $filtrestatut Id statut pour filtrer sur un statut + * @param int $forVirtualStock Ignore rights filter for virtual stock calculation. + * @return array Array of stats (nb=nb of order, qty=qty ordered) */ - function load_stats_commande($socid=0,$filtrestatut='') + function load_stats_commande($socid=0,$filtrestatut='', $forVirtualStock = 0) { global $conf,$user; @@ -2149,12 +2150,12 @@ function load_stats_commande($socid=0,$filtrestatut='') $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd"; $sql.= ", ".MAIN_DB_PREFIX."commande as c"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE c.rowid = cd.fk_commande"; $sql.= " AND c.fk_soc = s.rowid"; $sql.= " AND c.entity IN (".getEntity('commande').")"; $sql.= " AND cd.fk_product = ".$this->id; - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; if ($socid > 0) $sql.= " AND c.fk_soc = ".$socid; if ($filtrestatut <> '') $sql.= " AND c.fk_statut in (".$filtrestatut.")"; @@ -2202,11 +2203,12 @@ function load_stats_commande($socid=0,$filtrestatut='') /** * Charge tableau des stats commande fournisseur pour le produit/service * - * @param int $socid Id societe pour filtrer sur une societe - * @param string $filtrestatut Id des statuts pour filtrer sur des statuts - * @return array Tableau des stats + * @param int $socid Id societe pour filtrer sur une societe + * @param string $filtrestatut Id des statuts pour filtrer sur des statuts + * @param int $forVirtualStock Ignore rights filter for virtual stock calculation. + * @return array Tableau des stats */ - function load_stats_commande_fournisseur($socid=0,$filtrestatut='') + function load_stats_commande_fournisseur($socid=0,$filtrestatut='', $forVirtualStock = 0) { global $conf,$user; @@ -2215,12 +2217,12 @@ function load_stats_commande_fournisseur($socid=0,$filtrestatut='') $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cd"; $sql.= ", ".MAIN_DB_PREFIX."commande_fournisseur as c"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE c.rowid = cd.fk_commande"; $sql.= " AND c.fk_soc = s.rowid"; $sql.= " AND c.entity IN (".getEntity('supplier_order').")"; $sql.= " AND cd.fk_product = ".$this->id; - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; if ($socid > 0) $sql.= " AND c.fk_soc = ".$socid; if ($filtrestatut != '') $sql.= " AND c.fk_statut in (".$filtrestatut.")"; // Peut valoir 0 @@ -2244,11 +2246,12 @@ function load_stats_commande_fournisseur($socid=0,$filtrestatut='') /** * Charge tableau des stats expedition client pour le produit/service * - * @param int $socid Id societe pour filtrer sur une societe - * @param int $filtrestatut Id statut pour filtrer sur un statut - * @return array Tableau des stats + * @param int $socid Id societe pour filtrer sur une societe + * @param string $filtrestatut Id statut pour filtrer sur un statut + * @param int $forVirtualStock Ignore rights filter for virtual stock calculation. + * @return array Tableau des stats */ - function load_stats_sending($socid=0,$filtrestatut='') + function load_stats_sending($socid=0,$filtrestatut='', $forVirtualStock = 0) { global $conf,$user; @@ -2259,14 +2262,14 @@ function load_stats_sending($socid=0,$filtrestatut='') $sql.= ", ".MAIN_DB_PREFIX."commande as c"; $sql.= ", ".MAIN_DB_PREFIX."expedition as e"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE e.rowid = ed.fk_expedition"; $sql.= " AND c.rowid = cd.fk_commande"; $sql.= " AND e.fk_soc = s.rowid"; $sql.= " AND e.entity IN (".getEntity('expedition').")"; $sql.= " AND ed.fk_origin_line = cd.rowid"; $sql.= " AND cd.fk_product = ".$this->id; - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND e.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= " AND e.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; if ($socid > 0) $sql.= " AND e.fk_soc = ".$socid; if ($filtrestatut <> '') $sql.= " AND c.fk_statut in (".$filtrestatut.")"; @@ -2290,11 +2293,12 @@ function load_stats_sending($socid=0,$filtrestatut='') /** * Charge tableau des stats réception fournisseur pour le produit/service * - * @param int $socid Id societe pour filtrer sur une societe - * @param int $filtrestatut Id statut pour filtrer sur un statut - * @return array Tableau des stats + * @param int $socid Id societe pour filtrer sur une societe + * @param string $filtrestatut Id statut pour filtrer sur un statut + * @param int $forVirtualStock Ignore rights filter for virtual stock calculation. + * @return array Tableau des stats */ - function load_stats_reception($socid=0,$filtrestatut='') + function load_stats_reception($socid=0,$filtrestatut='', $forVirtualStock = 0) { global $conf,$user; @@ -2303,12 +2307,12 @@ function load_stats_reception($socid=0,$filtrestatut='') $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur_dispatch as fd"; $sql.= ", ".MAIN_DB_PREFIX."commande_fournisseur as cf"; $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE cf.rowid = fd.fk_commande"; $sql.= " AND cf.fk_soc = s.rowid"; $sql.= " AND cf.entity IN (".getEntity('supplier_order').")"; $sql.= " AND fd.fk_product = ".$this->id; - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND cf.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; + if (!$user->rights->societe->client->voir && !$socid && !$forVirtualStock) $sql.= " AND cf.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; if ($socid > 0) $sql.= " AND cf.fk_soc = ".$socid; if ($filtrestatut <> '') $sql.= " AND cf.fk_statut in (".$filtrestatut.")"; @@ -3801,23 +3805,23 @@ function load_virtual_stock() if (! empty($conf->commande->enabled)) { - $result=$this->load_stats_commande(0,'1,2'); + $result=$this->load_stats_commande(0,'1,2', 1); if ($result < 0) dol_print_error($this->db,$this->error); $stock_commande_client=$this->stats_commande['qty']; } if (! empty($conf->expedition->enabled)) { - $result=$this->load_stats_sending(0,'1,2'); + $result=$this->load_stats_sending(0,'1,2', 1); if ($result < 0) dol_print_error($this->db,$this->error); $stock_sending_client=$this->stats_expedition['qty']; } if (! empty($conf->fournisseur->enabled)) { - $result=$this->load_stats_commande_fournisseur(0,'1,2,3,4'); + $result=$this->load_stats_commande_fournisseur(0,'1,2,3,4', 1); if ($result < 0) dol_print_error($this->db,$this->error); $stock_commande_fournisseur=$this->stats_commande_fournisseur['qty']; - $result=$this->load_stats_reception(0,'4'); + $result=$this->load_stats_reception(0,'4', 1); if ($result < 0) dol_print_error($this->db,$this->error); $stock_reception_fournisseur=$this->stats_reception['qty']; } diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 4d1eed9d5e1be..1daff12476405 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -655,7 +655,7 @@ { if ($found) $helpondiff.='
'; else $found=1; $helpondiff.=$langs->trans("ProductQtyInCustomersOrdersRunning").': '.$object->stats_commande['qty']; - $result=$object->load_stats_commande(0,'0'); + $result=$object->load_stats_commande(0,'0', 1); if ($result < 0) dol_print_error($db,$object->error); $helpondiff.=' ('.$langs->trans("ProductQtyInDraft").': '.$object->stats_commande['qty'].')'; } @@ -664,7 +664,7 @@ if (! empty($conf->expedition->enabled)) { if ($found) $helpondiff.='
'; else $found=1; - $result=$object->load_stats_sending(0,'2'); + $result=$object->load_stats_sending(0,'2', 1); $helpondiff.=$langs->trans("ProductQtyInShipmentAlreadySent").': '.$object->stats_expedition['qty']; } @@ -672,9 +672,9 @@ if (! empty($conf->fournisseur->enabled)) { if ($found) $helpondiff.='
'; else $found=1; - $result=$object->load_stats_commande_fournisseur(0,'3,4'); + $result=$object->load_stats_commande_fournisseur(0,'3,4', 1); $helpondiff.=$langs->trans("ProductQtyInSuppliersOrdersRunning").': '.$object->stats_commande_fournisseur['qty']; - $result=$object->load_stats_commande_fournisseur(0,'0,1,2'); + $result=$object->load_stats_commande_fournisseur(0,'0,1,2', 1); if ($result < 0) dol_print_error($db,$object->error); $helpondiff.=' ('.$langs->trans("ProductQtyInDraftOrWaitingApproved").': '.$object->stats_commande_fournisseur['qty'].')'; }