Merge pull request #20456 from hregis/fix_mutlicompany_sharings_compatibility
FIX multicompany sharings compatibility
This commit is contained in:
commit
5108240ed5
@ -4374,9 +4374,10 @@ abstract class CommonObject
|
||||
* Check is done into this->childtables. There is no check into llx_element_element.
|
||||
*
|
||||
* @param int $id Force id of object
|
||||
* @param int $entity Force entity to check
|
||||
* @return int <0 if KO, 0 if not used, >0 if already used
|
||||
*/
|
||||
public function isObjectUsed($id = 0)
|
||||
public function isObjectUsed($id = 0, $entity = 0)
|
||||
{
|
||||
global $langs;
|
||||
|
||||
@ -4399,11 +4400,25 @@ abstract class CommonObject
|
||||
|
||||
// Test if child exists
|
||||
$haschild = 0;
|
||||
foreach ($arraytoscan as $table => $elementname) {
|
||||
foreach ($arraytoscan as $table => $element) {
|
||||
//print $id.'-'.$table.'-'.$elementname.'<br>';
|
||||
// Check if third party can be deleted
|
||||
$sql = "SELECT COUNT(*) as nb from ".$this->db->prefix().$table;
|
||||
$sql .= " WHERE ".$this->fk_element." = ".((int) $id);
|
||||
// Check if element can be deleted
|
||||
$sql = "SELECT COUNT(*) as nb";
|
||||
$sql.= " FROM ".$this->db->prefix().$table." as c";
|
||||
if (!empty($element['parent']) && !empty($element['parentkey'])) {
|
||||
$sql.= ", ".$this->db->prefix().$element['parent']." as p";
|
||||
}
|
||||
$sql.= " WHERE c.".$this->fk_element." = ".((int) $id);
|
||||
if (!empty($element['parent']) && !empty($element['parentkey'])) {
|
||||
$sql.= " AND c.".$element['parentkey']." = p.rowid";
|
||||
}
|
||||
if (!empty($entity)) {
|
||||
if (!empty($element['parent']) && !empty($element['parentkey'])) {
|
||||
$sql.= " AND p.entity = ".((int) $entity);
|
||||
} else {
|
||||
$sql.= " AND c.entity = ".((int) $entity);
|
||||
}
|
||||
}
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
@ -4411,11 +4426,12 @@ abstract class CommonObject
|
||||
$langs->load("errors");
|
||||
//print 'Found into table '.$table.', type '.$langs->transnoentitiesnoconv($elementname).', haschild='.$haschild;
|
||||
$haschild += $obj->nb;
|
||||
if (is_numeric($elementname)) { // old usage
|
||||
$this->errors[] = $langs->transnoentities("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $table);
|
||||
} else // new usage: $elementname=Translation key
|
||||
{
|
||||
$this->errors[] = $langs->transnoentities("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $langs->transnoentitiesnoconv($elementname));
|
||||
if (is_numeric($element)) { // very old usage array('table1', 'table2', ...)
|
||||
$this->errors[] = $langs->transnoentitiesnoconv("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $table);
|
||||
} elseif (is_string($element)) { // old usage array('table1' => 'TranslateKey1', 'table2' => 'TranslateKey2', ...)
|
||||
$this->errors[] = $langs->transnoentitiesnoconv("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $langs->transnoentitiesnoconv($element));
|
||||
} else { // new usage: $element['name']=Translation key
|
||||
$this->errors[] = $langs->transnoentitiesnoconv("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $langs->transnoentitiesnoconv($element['name']));
|
||||
}
|
||||
break; // We found at least one, we stop here
|
||||
}
|
||||
|
||||
@ -64,13 +64,13 @@ class Product extends CommonObject
|
||||
* @var array List of child tables. To test if we can delete object.
|
||||
*/
|
||||
protected $childtables = array(
|
||||
'supplier_proposaldet',
|
||||
'propaldet',
|
||||
'commandedet',
|
||||
'facturedet',
|
||||
'contratdet',
|
||||
'facture_fourn_det',
|
||||
'commande_fournisseurdet'
|
||||
'supplier_proposaldet' => array('name' => 'SupplierProposal', 'parent' => 'supplier_proposal', 'parentkey' => 'fk_supplier_proposal'),
|
||||
'propaldet' => array('name' => 'Proposal', 'parent' => 'propal', 'parentkey' => 'fk_propal'),
|
||||
'commandedet' => array('name' => 'Order', 'parent' => 'commande', 'parentkey' => 'fk_commande'),
|
||||
'facturedet' => array('name' => 'Invoice', 'parent' => 'facture', 'parentkey' => 'fk_facture'),
|
||||
'contratdet' => array('name' => 'Contract', 'parent' => 'contrat', 'parentkey' => 'fk_contrat'),
|
||||
'facture_fourn_det' => array('name' => 'SupplierInvoice', 'parent' => 'facture_fourn', 'parentkey' => 'fk_facture_fourn'),
|
||||
'commande_fournisseurdet' => array('name' => 'SupplierOrder', 'parent' => 'commande_fournisseur', 'parentkey' => 'fk_commande')
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@ -59,7 +59,9 @@ class Task extends CommonObjectLine
|
||||
/**
|
||||
* @var array List of child tables. To test if we can delete object.
|
||||
*/
|
||||
protected $childtables = array('projet_task_time');
|
||||
protected $childtables = array(
|
||||
'projet_task_time' => array('name' => 'Task', 'parent' => 'projet_task', 'parentkey' => 'fk_task')
|
||||
);
|
||||
|
||||
/**
|
||||
* @var int ID parent task
|
||||
|
||||
@ -73,18 +73,18 @@ class Societe extends CommonObject
|
||||
* @var array List of child tables. To test if we can delete object.
|
||||
*/
|
||||
protected $childtables = array(
|
||||
"supplier_proposal" => 'SupplierProposal',
|
||||
"propal" => 'Proposal',
|
||||
"commande" => 'Order',
|
||||
"facture" => 'Invoice',
|
||||
"facture_rec" => 'RecurringInvoiceTemplate',
|
||||
"contrat" => 'Contract',
|
||||
"fichinter" => 'Fichinter',
|
||||
"facture_fourn" => 'SupplierInvoice',
|
||||
"commande_fournisseur" => 'SupplierOrder',
|
||||
"projet" => 'Project',
|
||||
"expedition" => 'Shipment',
|
||||
"prelevement_lignes" => 'DirectDebitRecord',
|
||||
'supplier_proposal' => array('name' => 'SupplierProposal'),
|
||||
'propal' => array('name' => 'Proposal'),
|
||||
'commande' => array('name' => 'Order'),
|
||||
'facture' => array('name' => 'Invoice'),
|
||||
'facture_rec' => array('name' => 'RecurringInvoiceTemplate'),
|
||||
'contrat' => array('name' => 'Contract'),
|
||||
'fichinter' => array('name' => 'Fichinter'),
|
||||
'facture_fourn' => array('name' => 'SupplierInvoice'),
|
||||
'commande_fournisseur' => array('name' => 'SupplierOrder'),
|
||||
'projet' => array('name' => 'Project'),
|
||||
'expedition' => array('name' => 'Shipment'),
|
||||
'prelevement_lignes' => array('name' => 'DirectDebitRecord'),
|
||||
);
|
||||
|
||||
/**
|
||||
@ -92,22 +92,22 @@ class Societe extends CommonObject
|
||||
* if name like with @ClassName:FilePathClass:ParentFkFieldName' it will call method deleteByParentField (with parentId as parameters) and FieldName to fetch and delete child object
|
||||
*/
|
||||
protected $childtablesoncascade = array(
|
||||
"societe_prices",
|
||||
"societe_address",
|
||||
"product_fournisseur_price",
|
||||
"product_customer_price_log",
|
||||
"product_customer_price",
|
||||
"@Contact:/contact/class/contact.class.php:fk_soc",
|
||||
"adherent",
|
||||
"societe_account",
|
||||
"societe_rib",
|
||||
"societe_remise",
|
||||
"societe_remise_except",
|
||||
"societe_commerciaux",
|
||||
"categorie",
|
||||
"notify",
|
||||
"notify_def",
|
||||
"actioncomm",
|
||||
'societe_prices',
|
||||
'societe_address',
|
||||
'product_fournisseur_price',
|
||||
'product_customer_price_log',
|
||||
'product_customer_price',
|
||||
'@Contact:/contact/class/contact.class.php:fk_soc',
|
||||
'adherent',
|
||||
'societe_account',
|
||||
'societe_rib',
|
||||
'societe_remise',
|
||||
'societe_remise_except',
|
||||
'societe_commerciaux',
|
||||
'categorie',
|
||||
'notify',
|
||||
'notify_def',
|
||||
'actioncomm',
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user