function createOfAndCommandesFourn(&$PDOdb)
 {
     global $db, $user;
     dol_include_once("fourn/class/fournisseur.commande.class.php");
     $TabOF = array();
     $TabOF[] = $this->rowid;
     $this->getListeOFEnfants($PDOdb, $TabOF);
     // Boucle pour chaque OF de l'arbre
     foreach ($TabOF as $idOf) {
         // On charge l'OF
         $assetOF = new TAssetOF();
         $assetOF->load($PDOdb, $idOf);
         // Boucle pour chaque produit de l'OF
         foreach ($assetOF->TAssetOFLine as $ofLigne) {
             //pre($ofLigne,true);
             // On cherche le produit "TO_MAKE"
             if ($ofLigne->type == "TO_MAKE") {
                 //pre($ofLigne,true); exit;
                 if ($ofLigne->fk_product_fournisseur_price > 0) {
                     // Fournisseur externe
                     // On récupère la ligne prix fournisseur correspondante
                     $sql = "SELECT rowid, fk_soc, fk_product, price, compose_fourni, quantity, ref_fourn";
                     $sql .= " FROM " . MAIN_DB_PREFIX . "product_fournisseur_price";
                     $sql .= " WHERE rowid = " . $ofLigne->fk_product_fournisseur_price;
                     $resql = $db->query($sql);
                     $res = $db->fetch_object($resql);
                     // Si fabrication interne
                     if ($res->compose_fourni) {
                         // On charge le produit "TO_MAKE"
                         $prod = new Product($db);
                         $prod->fetch($ofLigne->fk_product);
                         $prod->load_stock();
                         $stockProd = 0;
                         // On récupère son stock
                         foreach ($prod->stock_warehouse as $stock) {
                             $stockProd += $stock->real;
                         }
                         // S'il y a suffisemment de stock, on destocke
                         // Sinon, commande fournisseur :
                         if ($stockProd < $ofLigne->qty_needed) {
                             $this->addCommandeFourn($PDOdb, $ofLigne, $res);
                         } else {
                             // Suffisemment de stock, donc destockage :
                             $assetOF->openOF($PDOdb);
                         }
                     } elseif (!$res->compose_fourni) {
                         //Commande Fournisseur
                         $this->addCommandeFourn($PDOdb, $ofLigne, $res);
                         // On récupère les OF enfants pour les supprimer
                         $TabIdEnfantsDirects = $assetOF->getEnfantsDirects();
                         foreach ($TabIdEnfantsDirects as $idOF) {
                             $assetOF->removeChild("TAssetOF", $idOF);
                         }
                         //Suppression des lignes NEEDED puisque inutiles
                         $assetOF->delLineNeeded($PDOdb);
                         $assetOF->unsetChildDeleted = true;
                         $assetOF->save($PDOdb);
                         // On casse la boucle
                         break;
                     }
                 } else {
                     // Fournisseur interne (Bourguignon) [PH - 14/04/15 - FIXME c'est pas que pour bourguignon ?]
                     if ($ofLigne->fk_product_fournisseur_price == -1) {
                         // Sortie de stock, kill OF enfants
                         $TabIdEnfantsDirects = $assetOF->getEnfantsDirects();
                         foreach ($TabIdEnfantsDirects as $idOF) {
                             $assetOF->removeChild("TAssetOF", $idOF);
                         }
                         $assetOF->save($PDOdb);
                         // On casse la boucle
                         break;
                     } elseif ($ofLigne->fk_product_fournisseur_price == -2) {
                         // Fabrication interne
                         //[PH] FIXME - pourquoi on destock maintenant ? On valide tt juste l'OF
                         $prod = new Product($db);
                         $prod->fetch($ofLigne->fk_product);
                         $prod->load_stock();
                         $stockProd = 0;
                         // On récupère son stock
                         foreach ($prod->stock_warehouse as $stock) {
                             $stockProd += $stock->real;
                         }
                         // S'il y a sufisemment de stock, on destocke
                         if ($stockProd >= $ofLigne->qty_needed) {
                             //$assetOF->openOF($PDOdb);
                             $assetOF->status = 'VALID';
                         }
                     }
                 }
             }
         }
     }
 }