diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 420b90926dd..fc7f6792274 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -348,32 +348,46 @@ class Conf if (! empty($this->fournisseur)) { $this->fournisseur->commande=new stdClass(); - $this->fournisseur->commande->dir_output=$rootfordata."/fournisseur/commande"; - $this->fournisseur->commande->dir_temp =$rootfordata."/fournisseur/commande/temp"; + $this->fournisseur->commande->multidir_output=array($this->entity => $rootfordata."/fournisseur/commande"); + $this->fournisseur->commande->multidir_temp =array($this->entity => $rootfordata."/fournisseur/commande/temp"); + $this->fournisseur->commande->dir_output=$rootfordata."/fournisseur/commande"; // For backward compatibility + $this->fournisseur->commande->dir_temp =$rootfordata."/fournisseur/commande/temp"; // For backward compatibility $this->fournisseur->facture=new stdClass(); - $this->fournisseur->facture->dir_output =$rootfordata."/fournisseur/facture"; - $this->fournisseur->facture->dir_temp =$rootfordata."/fournisseur/facture/temp"; + $this->fournisseur->facture->multidir_output=array($this->entity => $rootfordata."/fournisseur/facture"); + $this->fournisseur->facture->multidir_temp =array($this->entity => $rootfordata."/fournisseur/facture/temp"); + $this->fournisseur->facture->dir_output =$rootfordata."/fournisseur/facture"; // For backward compatibility + $this->fournisseur->facture->dir_temp =$rootfordata."/fournisseur/facture/temp"; // For backward compatibility $this->supplierproposal=new stdClass(); - $this->supplierproposal->dir_output=$rootfordata."/supplier_proposal"; - $this->supplierproposal->dir_temp=$rootfordata."/supplier_proposal/temp"; + $this->supplierproposal->multidir_output=array($this->entity => $rootfordata."/supplier_proposal"); + $this->supplierproposal->multidir_temp =array($this->entity => $rootfordata."/supplier_proposal/temp"); + $this->supplierproposal->dir_output=$rootfordata."/supplier_proposal"; // For backward compatibility + $this->supplierproposal->dir_temp=$rootfordata."/supplier_proposal/temp"; // For backward compatibility $this->fournisseur->payment=new stdClass(); - $this->fournisseur->payment->dir_output =$rootfordata."/fournisseur/payment"; - $this->fournisseur->payment->dir_temp =$rootfordata."/fournisseur/payment/temp"; + $this->fournisseur->payment->multidir_output=array($this->entity => $rootfordata."/fournisseur/payment"); + $this->fournisseur->payment->multidir_temp =array($this->entity => $rootfordata."/fournisseur/payment/temp"); + $this->fournisseur->payment->dir_output =$rootfordata."/fournisseur/payment"; // For backward compatibility + $this->fournisseur->payment->dir_temp =$rootfordata."/fournisseur/payment/temp"; // For backward compatibility // To prepare split of module fournisseur into fournisseur + supplier_order + supplier_invoice if (! empty($this->fournisseur->enabled) && empty($this->global->MAIN_USE_NEW_SUPPLIERMOD)) // By default, if module supplier is on, we set new properties { $this->supplier_order=new stdClass(); $this->supplier_order->enabled=1; - $this->supplier_order->dir_output=$rootfordata."/fournisseur/commande"; - $this->supplier_order->dir_temp=$rootfordata."/fournisseur/commande/temp"; + $this->supplier_order->multidir_output=array($this->entity => $rootfordata."/fournisseur/commande"); + $this->supplier_order->multidir_temp =array($this->entity => $rootfordata."/fournisseur/commande/temp"); + $this->supplier_order->dir_output=$rootfordata."/fournisseur/commande"; // For backward compatibility + $this->supplier_order->dir_temp=$rootfordata."/fournisseur/commande/temp"; // For backward compatibility $this->supplier_invoice=new stdClass(); $this->supplier_invoice->enabled=1; - $this->supplier_invoice->dir_output=$rootfordata."/fournisseur/facture"; - $this->supplier_invoice->dir_temp=$rootfordata."/fournisseur/facture/temp"; + $this->supplier_invoice->multidir_output=array($this->entity => $rootfordata."/fournisseur/facture"); + $this->supplier_invoice->multidir_temp =array($this->entity => $rootfordata."/fournisseur/facture/temp"); + $this->supplier_invoice->dir_output=$rootfordata."/fournisseur/facture"; // For backward compatibility + $this->supplier_invoice->dir_temp=$rootfordata."/fournisseur/facture/temp"; // For backward compatibility $this->supplierproposal=new stdClass(); - $this->supplierproposal->dir_output=$rootfordata."/supplier_proposal"; - $this->supplierproposal->dir_temp=$rootfordata."/supplier_proposal/temp"; + $this->supplierproposal->multidir_output=array($this->entity => $rootfordata."/supplier_proposal"); + $this->supplierproposal->multidir_temp =array($this->entity => $rootfordata."/supplier_proposal/temp"); + $this->supplierproposal->dir_output=$rootfordata."/supplier_proposal"; // For backward compatibility + $this->supplierproposal->dir_temp=$rootfordata."/supplier_proposal/temp"; // For backward compatibility } } diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 34f0b9ab750..5824d2ca5ec 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -884,15 +884,13 @@ class FormFile $out=''; $this->infofiles=array('nboffiles'=>0,'extensions'=>array(),'files'=>array()); + $entity = 1; // Without multicompany + // Get object entity - if (empty($conf->multicompany->enabled)) - { - $entity = $conf->entity; - } - else + if (! empty($conf->multicompany->enabled)) { preg_match('/\/([0-9]+)\/[^\/]+\/'.preg_quote($modulesubdir,'/').'$/', $filedir, $regs); - $entity = ((! empty($regs[1]) && $regs[1] > 1) ? $regs[1] : $conf->entity); + $entity = ((! empty($regs[1]) && $regs[1] > 1) ? $regs[1] : 1); // If entity id not found in $filedir this is entity 1 by default } // Get list of files starting with name of ref (but not followed by "-" to discard uploaded files and get only generated files) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index ab47079c9d0..514abd4c5ec 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -565,11 +565,11 @@ class Project extends CommonObject if ($type == 'agenda') { - $sql = "SELECT id as rowid FROM " . MAIN_DB_PREFIX . "actioncomm WHERE fk_project IN (". $ids .")"; + $sql = "SELECT id as rowid FROM " . MAIN_DB_PREFIX . "actioncomm WHERE fk_project IN (". $ids .") AND entity IN (".getEntity('agenda').")"; } elseif ($type == 'expensereport') { - $sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet IN (". $ids .")"; + $sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND e.entity IN (".getEntity('expensereport').") AND ed.fk_projet IN (". $ids .")"; } elseif ($type == 'project_task') { @@ -581,11 +581,11 @@ class Project extends CommonObject } elseif ($type == 'stock_mouvement') { - $sql = 'SELECT ms.rowid, ms.fk_user_author as fk_user FROM ' . MAIN_DB_PREFIX . "stock_mouvement as ms WHERE ms.origintype = 'project' AND ms.fk_origin IN (". $ids .") AND ms.type_mouvement = 1"; + $sql = 'SELECT ms.rowid, ms.fk_user_author as fk_user FROM ' . MAIN_DB_PREFIX . "stock_mouvement as ms, " . MAIN_DB_PREFIX . "entrepot as e WHERE e.rowid = ms.fk_entrepot AND e.entity IN (".getEntity('stock').") AND ms.origintype = 'project' AND ms.fk_origin IN (". $ids .") AND ms.type_mouvement = 1"; } else { - $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE ".$projectkey." IN (". $ids .")"; + $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE ".$projectkey." IN (". $ids .") AND entity IN (".getEntity($type).")"; } if ($dates > 0) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 7c44fb9850b..b8017b45048 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -905,16 +905,16 @@ foreach ($listofreferent as $key => $value) $element_doc = $element->element; $filename=dol_sanitizeFileName($element->ref); - $filedir=$conf->{$element_doc}->dir_output . '/' . dol_sanitizeFileName($element->ref); + $filedir=$conf->{$element_doc}->multidir_output[$element->entity] . '/' . dol_sanitizeFileName($element->ref); if ($element_doc === 'order_supplier') { $element_doc='commande_fournisseur'; - $filedir = $conf->fournisseur->commande->dir_output.'/'.dol_sanitizeFileName($element->ref); + $filedir = $conf->fournisseur->commande->multidir_output[$element->entity].'/'.dol_sanitizeFileName($element->ref); } else if ($element_doc === 'invoice_supplier') { $element_doc='facture_fournisseur'; $filename = get_exdir($element->id,2,0,0,$element,'product').dol_sanitizeFileName($element->ref); - $filedir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($element->id,2,0,0,$element,'invoice_supplier').dol_sanitizeFileName($element->ref); + $filedir = $conf->fournisseur->facture->multidir_output[$element->entity].'/'.get_exdir($element->id,2,0,0,$element,'invoice_supplier').dol_sanitizeFileName($element->ref); } print '