FIX : Recursively retrieves all parent bom in the tree that leads to the $bom_id bom to check if we're allowed to add bom as bomline
This commit is contained in:
parent
e3f9b15db3
commit
e1bf5a5e6b
@ -180,6 +180,16 @@ if (empty($reshook)) {
|
||||
$error++;
|
||||
}
|
||||
|
||||
// We check if we're allowed to add this bom
|
||||
$TParentBom=array();
|
||||
$object->getParentBomTreeRecursive($TParentBom, $object->id);
|
||||
if($bom_child_id > 0 && !empty($TParentBom) && in_array($bom_child_id, $TParentBom)) {
|
||||
$n_child = new BOM($db);
|
||||
$n_child->fetch($bom_child_id);
|
||||
setEventMessages($langs->transnoentities('BomCantAddChildBom', $n_child->getNomUrl(1), $object->getNomUrl(1)), null, 'errors');
|
||||
$error++;
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$bomline = new BOMLine($db);
|
||||
$bomline->fk_bom = $id;
|
||||
|
||||
@ -1147,6 +1147,34 @@ class BOM extends CommonObject
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively retrieves all parent bom in the tree that leads to the $bom_id bom
|
||||
*
|
||||
* @param array $TParentBom We put all found parent bom in $TParentBom
|
||||
* @param int $bom_id ID of bom from which we want to get parent bom ids
|
||||
* @return void
|
||||
*/
|
||||
public function getParentBomTreeRecursive(&$TParentBom, $bom_id) {
|
||||
|
||||
$sql = 'SELECT l.fk_bom, b.label
|
||||
FROM '.MAIN_DB_PREFIX.'bom_bomline l
|
||||
INNER JOIN '.MAIN_DB_PREFIX.$this->table_element.' b ON b.rowid = l.fk_bom
|
||||
WHERE fk_bom_child = '.$bom_id;
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
if(!empty($resql)) {
|
||||
|
||||
while($res = $this->db->fetch_object($resql)) {
|
||||
|
||||
$TParentBom[$res->fk_bom] = $res->fk_bom;
|
||||
$this->getParentBomTreeRecursive($TParentBom, $res->fk_bom);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -112,3 +112,4 @@ MOAndLines=Manufacturing Orders and lines
|
||||
MoChildGenerate=Generate Child Mo
|
||||
ParentMo=MO Parent
|
||||
MOChild=MO Child
|
||||
BomCantAddChildBom=The nomenclature %s is already present in the tree leading to the nomenclature %s
|
||||
|
||||
@ -112,3 +112,4 @@ MOAndLines=Ordres de fabrication et lignes
|
||||
MoChildGenerate=Generate Child Mo
|
||||
ParentMo=MO Parent
|
||||
MOChild=MO Child
|
||||
BomCantAddChildBom=La nomenclature %s est déjà présente dans l'arborescence qui mène à la nomenclature %s
|
||||
|
||||
Loading…
Reference in New Issue
Block a user