diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 5a4f3b5fa14d2ae051b76ffae926e3708bd0bedd..8374547eaf1331e944e9fed53d954412da4b1ab4 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -324,6 +324,7 @@ if ($resql) $var=true; $total=0; $subtotal=0; + $productstat_cache=array(); $generic_commande = new Commande($db); $generic_product = new Product($db); @@ -356,17 +357,32 @@ if ($resql) if ($generic_commande->lines[$lig]->product_type==0) { $nbprod++; // order contains real products $generic_product->id = $generic_commande->lines[$lig]->fk_product; - $generic_product->load_stock(); + if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) { + $generic_product->load_stock(true); + $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel; + } else { + $generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel']; + } // stock order and stock order_supplier $stock_order=0; $stock_order_supplier=0; if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) { if (! empty($conf->commande->enabled)) { - $generic_product->load_stats_commande(0,'1,2'); + if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'])) { + $generic_product->load_stats_commande(0,'1,2',true); + $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'] = $generic_product->stats_commande['qty']; + } else { + $generic_product->stats_commande['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer']; + } $stock_order=$generic_product->stats_commande['qty']; } if (! empty($conf->fournisseur->enabled)) { - $generic_product->load_stats_commande_fournisseur(0,'3'); + if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) { + $generic_product->load_stats_commande_fournisseur(0,'3',true); + $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty']; + } else { + $generic_product->stats_commande_fournisseur['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier']; + } $stock_order_supplier=$generic_product->stats_commande_fournisseur['qty']; } } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index b9a88fd01561912bb7e707b66c506536e6aa3280..eb224e0748d0f187c62d0d162dd3fe4e64e158f3 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1260,7 +1260,7 @@ else * Lines of contracts */ - if ($conf->product->enabled) { + if ($conf->product->enabled || $conf->service->enabled) { $productstatic=new Product($db); } @@ -1329,7 +1329,7 @@ else $productstatic->ref=$objp->label; print $productstatic->getNomUrl(0,'',16); } - if (! empty($conf->global->PRODUIT_DESC_IN_FORM) and $objp->description) + if (! empty($conf->global->PRODUIT_DESC_IN_FORM) && !empty($objp->description)) print '<br>'.dol_nl2br($objp->description); print '</td>'; } diff --git a/htdocs/contrat/class/index.html b/htdocs/contrat/class/index.html deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index daed685ce633f905fbdcf0db932d880f8064d843..6af9f298e8ed8e1654b81059a6819a6ee64391c4 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2458,7 +2458,7 @@ function dol_print_error($db='',$error='') if ($_SERVER['DOCUMENT_ROOT']) // Mode web { $out.=$langs->trans("DolibarrHasDetectedError").".<br>\n"; - if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, anywhere, until going back to MAIN_FEATURES_LEVEL = 0.<br>\n"; + if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, except if problem is confirmed moving option MAIN_FEATURES_LEVEL back to 0.<br>\n"; $out.=$langs->trans("InformationToHelpDiagnose").":<br>\n"; $out.="<b>".$langs->trans("Date").":</b> ".dol_print_date(time(),'dayhourlog')."<br>\n"; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index f304d71b1c13a23190fe83a1171722fd1bf14293..e018a45eab9f6278bf95b7585bbdc6952d4c8fd8 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -294,7 +294,7 @@ DoNotUseInProduction=Do not use in production ThisIsProcessToFollow=This is setup to process: StepNb=Step %s FindPackageFromWebSite=Find a package that provides feature you want (for example on official web site %s). -DownloadPackageFromWebSite=Download package. +DownloadPackageFromWebSite=Download package %s. UnpackPackageInDolibarrRoot=Unpack package file into Dolibarr's root directory <b>%s</b> SetupIsReadyForUse=Install is finished and Dolibarr is ready to use with this new component. NotExistsDirect=The alternative root directory is not defined.<br> diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index fe09bda787bd58f6ea51dad5138b278edfb15d62..bbbf2d3a04682c84eacab238b218ac666265f771 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -43,6 +43,8 @@ ECMDocsByContracts=Documents linked to contracts ECMDocsByInvoices=Documents linked to customers invoices ECMDocsByProducts=Documents linked to products ECMDocsByProjects=Documents linked to projects +ECMDocsByUsers=Documents linked to users +ECMDocsByInterventions=Documents linked to interventions ECMNoDirectoryYet=No directory created ShowECMSection=Show directory DeleteSection=Remove directory diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index ebc724edf5cf57a914ede84e03a98af4182b1fbd..4b77cba7a9c0207d8794101de82efb3539a6e190 100755 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -26,11 +26,11 @@ ProductsAndServicesOnSell=Available Products and Services ProductsAndServicesNotOnSell=Obsolete Products and Services ProductsAndServicesStatistics=Products and Services statistics ProductsStatistics=Products statistics -ProductsOnSell=Available products -ProductsNotOnSell=Obsolete products +ProductsOnSell=Product for sale or for pruchase +ProductsNotOnSell=Product out of sale and out of purchase ProductsOnSellAndOnBuy=Products for sale and for purchase -ServicesOnSell=Available services -ServicesNotOnSell=Obsolete services +ServicesOnSell=Services for sale or for pruchase +ServicesNotOnSell=Services out of sale ServicesOnSellAndOnBuy=Services for sale and for purchase InternalRef=Internal reference LastRecorded=Last products/services on sell recorded