*  @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html 
 */
CCanDo::checkRead();
$service_id = CValue::getOrSession('service_id');
$all_stocks = CValue::getOrSession('all_stocks') == 'true';
$date_min = CValue::getOrSession('_date_min');
$date_max = CValue::getOrSession('_date_max');
CValue::setSession('_date_min', $date_min);
CValue::setSession('_date_max', $date_max);
$destockages = array();
// Chargement de toutes les administrations dans la periode donnee
$administration = new CAdministration();
$where = array();
$where["dateTime"] = "BETWEEN '{$date_min}' AND '{$date_max}'";
$where["object_class"] = " = 'CPrescriptionLineMedicament'";
$administrations = $administration->loadList($where);
// Calcul des quantités administrées
foreach ($administrations as $_administration) {
    $_administration->loadTargetObject();
    $line =& $_administration->_ref_object;
    $code_cip = $line->code_cip;
    if (!isset($destockages[$code_cip]["quantite"])) {
        $destockages[$code_cip]["quantite"] = 0;
    }
    $destockages[$code_cip]["quantite"] += $_administration->quantite;
    // Tableaux de cache de medicaments
    if (!isset($medicaments[$code_cip])) {
        $medicaments[$code_cip] =& $line->_ref_produit;
    }
}
// Calcul du nombre de boites correspondant aux administrations
    $ljoin["prescription_line_mix_item"] = "(prescription_line_mix_item.prescription_line_mix_item_id = administration.object_id)\r\n                                             AND (administration.object_class = 'CPrescriptionLineMixItem')";
    $ljoin["prescription_line_mix"] = "prescription_line_mix_item.prescription_line_mix_id = prescription_line_mix.prescription_line_mix_id";
}
if (count($categories_id_pancarte)) {
    $ljoin["prescription_line_element"] = "(prescription_line_element.prescription_line_element_id = administration.object_id)\r\n                                             AND (administration.object_class = 'CPrescriptionLineElement')";
}
$ljoin["prescription"] = ($with_med ? "(prescription_line_medicament.prescription_id = prescription.prescription_id) OR\r\n                          (prescription_line_mix.prescription_id = prescription.prescription_id)" : "") . (count($categories_id_pancarte) ? ($with_med ? "OR " : "") . "(prescription_line_element.prescription_id = prescription.prescription_id)" : "");
$administrations = array();
if ($with_med || count($categories_id_pancarte)) {
    $where = array();
    $where["prescription.prescription_id"] = CSQLDataSource::prepareIn(CMbArray::pluck($prescriptions, "prescription_id"));
    if (count($categories_id_pancarte)) {
        $where["prescription_line_element.element_prescription_id"] = CSQLDataSource::prepareIn($categories_id_pancarte);
    }
    $where["administration.dateTime"] = "BETWEEN '{$date_min}' AND '{$date_max}'";
    $administrations = $administration->loadList($where, "prescription.prescription_id ASC, administration.dateTime ASC", null, null, $ljoin);
}
/*
// Chargement des administrations
$administration = new CAdministration();
$administrations = array();

$where = array();
$where["prescription.prescription_id"] = " = '$_prescription->_id'";
$where["administration.dateTime"] = " BETWEEN '$date_min' AND '$date_max'";

// CPrescriptionLineMedicament
$ljoin = array(
  "prescription_line_medicament" => "(prescription_line_medicament.prescription_line_medicament_id = administration.object_id)
                                           AND (administration.object_class = 'CPrescriptionLineMedicament')",
  "prescription"                 => "prescription_line_medicament.prescription_id = prescription.prescription_id",