function closeOF(&$PDOdb) { global $langs, $conf, $db, $user; dol_include_once('/projet/class/task.class.php'); $TIDOFToValidate = array($this->rowid); if ($conf->global->ASSET_CHILD_OF_STATUS_FOLLOW_PARENT_STATUS) { $this->getListeOFEnfants($PDOdb, $TIDOFToValidate, $this->rowid); } foreach ($TIDOFToValidate as $id_of) { $of = new TAssetOF(); $of->load($PDOdb, $id_of); // On passe pas un of en prod s'il l'est déjà ou s'il n'est pas au statut validé if ($of->rowid <= 0 || $of->status != 'OPEN') { continue; } $of->status = "CLOSE"; include_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; if (empty($conf->global->OF_ALLOW_FINISH_OF_WITH_UNRECEIVE_ORDER) && !$of->checkCommandeFournisseur($PDOdb)) { setEventMessage($langs->trans('OFAssetCmdFournNotFinish'), 'errors'); return false; } foreach ($of->TAssetOFLine as &$AssetOFLine) { if ($AssetOFLine->type == "TO_MAKE") { if ($AssetOFLine->qty_used == 0) { $AssetOFLine->qty_used = $AssetOFLine->qty; } $AssetOFLine->stockQtyToMakeAsset($PDOdb, $of); } else { $qty_needed = !empty($AssetOFLine->qty_needed) ? $AssetOFLine->qty_needed : $AssetOFLine->qty; if ($AssetOFLine->qty_used == 0) { $AssetOFLine->qty_used = $qty_needed; } $AssetOFLine->destockQtyUsedAsset($PDOdb); } } foreach ($of->TAssetWorkstationOF as &$wsof) { if ($wsof->fk_project_task > 0) { $t = new Task($db); $t->fetch($wsof->fk_project_task); if ($t->progress < 100) { $t->progress = 100; $t->update($user); } } if ($wsof->nb_hour_real == 0) { $wsof->nb_hour_real = $wsof->nb_hour; } } $of->save($PDOdb); } return true; }