$items_to_delete = array(); $factures = array(); foreach ($items as $_item) { $factures[$_item["object_class"] . "-" . $_item["object_id"]] = true; if (!isset($items_to_delete[$_item["factureitem_id"]])) { $items_to_delete[$_item["factureitem_id"]] = $_item; } } $facture_not_load = array(); $items = array(); foreach ($items_to_delete as $_item_see) { if (!isset($facture_not_load[$_item_see["object_class"] . "-" . $_item_see["object_id"]])) { $item = new CFactureItem(); $item->load($_item_see["factureitem_id"]); $facture = null; $facture = $item->loadRefFacture(); $facture->_ref_actes_ngap = array(); $facture->_ref_actes_ccam = array(); $facture->_ref_actes_divers = array(); $facture->loadRefsConsultation(); $actes = count($facture->_ref_actes_ngap) + count($facture->_ref_actes_ccam) + count($facture->_ref_actes_divers); $facture->loadRefsItems(); if (count($facture->_ref_items) == $actes) { $facture_not_load[$_item_see["object_class"] . "-" . $_item_see["object_id"]] = true; unset($factures[$_item_see["object_class"] . "-" . $_item_see["object_id"]]); unset($items_to_delete[$_item_see["factureitem_id"]]); } else { $items[] = $item; } } else { unset($items_to_delete[$_item_see["factureitem_id"]]);